Fixed setting the right DSP service on deserialization

This commit is contained in:
Hamish Milne 2020-01-17 01:01:18 +00:00 committed by zhupengfei
parent 2217b3558d
commit b2370ea353
3 changed files with 15 additions and 3 deletions

View file

@ -448,7 +448,10 @@ void System::serialize(Archive& ar, const unsigned int file_version) {
ar&* kernel.get(); ar&* kernel.get();
// This needs to be set from somewhere - might as well be here! // This needs to be set from somewhere - might as well be here!
Service::GSP::SetGlobalModule(*this); if (Archive::is_loading::value) {
Service::GSP::SetGlobalModule(*this);
DSP().SetServiceToInterrupt(ServiceManager().GetService<Service::DSP::DSP_DSP>("dsp::DSP"));
}
} }
void System::Save(std::ostream& stream) const { void System::Save(std::ostream& stream) const {

View file

@ -130,8 +130,9 @@ void Timing::Advance() {
std::pop_heap(event_queue.begin(), event_queue.end(), std::greater<>()); std::pop_heap(event_queue.begin(), event_queue.end(), std::greater<>());
event_queue.pop_back(); event_queue.pop_back();
if (event_types.find(*evt.type->name) == event_types.end()) { if (event_types.find(*evt.type->name) == event_types.end()) {
LOG_ERROR(Core, "Unknown queued event"); LOG_ERROR(Core, "Unknown queued event {}", *evt.type->name);
continue; } else if (evt.type->callback == nullptr) {
LOG_ERROR(Core, "Event '{}' has no callback", *evt.type->name);
} }
if (evt.type->callback != nullptr) { if (evt.type->callback != nullptr) {
evt.type->callback(evt.userdata, global_timer - evt.time); evt.type->callback(evt.userdata, global_timer - evt.time);

View file

@ -5,6 +5,7 @@
#pragma once #pragma once
#include <memory> #include <memory>
#include <boost/serialization/export.hpp>
#include "video_core/shader/shader.h" #include "video_core/shader/shader.h"
namespace Pica { namespace Pica {
@ -12,6 +13,9 @@ namespace Pica {
struct State; struct State;
class GeometryPipelineBackend; class GeometryPipelineBackend;
class GeometryPipeline_Point;
class GeometryPipeline_VariablePrimitive;
class GeometryPipeline_FixedPrimitive;
/// A pipeline receiving from vertex shader and sending to geometry shader and primitive assembler /// A pipeline receiving from vertex shader and sending to geometry shader and primitive assembler
class GeometryPipeline { class GeometryPipeline {
@ -52,3 +56,7 @@ private:
friend class boost::serialization::access; friend class boost::serialization::access;
}; };
} // namespace Pica } // namespace Pica
BOOST_CLASS_EXPORT_KEY(Pica::GeometryPipeline_Point)
BOOST_CLASS_EXPORT_KEY(Pica::GeometryPipeline_VariablePrimitive)
BOOST_CLASS_EXPORT_KEY(Pica::GeometryPipeline_FixedPrimitive)