Minor frontend fixes to savestates (#5430)

This commit is contained in:
Pengfei Zhu 2020-09-03 06:04:23 +08:00 committed by GitHub
parent 66846836bc
commit 6a77547bde
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 24 additions and 7 deletions

View file

@ -413,10 +413,16 @@ void GMainWindow::InitializeSaveStateMenuActions() {
ui.menu_Save_State->addAction(actions_save_state[i]); ui.menu_Save_State->addAction(actions_save_state[i]);
} }
connect(ui.action_Load_from_Newest_Slot, &QAction::triggered, connect(ui.action_Load_from_Newest_Slot, &QAction::triggered, [this] {
[this] { actions_load_state[newest_slot - 1]->trigger(); }); UpdateSaveStates();
connect(ui.action_Save_to_Oldest_Slot, &QAction::triggered, if (newest_slot != 0) {
[this] { actions_save_state[oldest_slot - 1]->trigger(); }); actions_load_state[newest_slot - 1]->trigger();
}
});
connect(ui.action_Save_to_Oldest_Slot, &QAction::triggered, [this] {
UpdateSaveStates();
actions_save_state[oldest_slot - 1]->trigger();
});
connect(ui.menu_Load_State->menuAction(), &QAction::hovered, this, connect(ui.menu_Load_State->menuAction(), &QAction::hovered, this,
&GMainWindow::UpdateSaveStates); &GMainWindow::UpdateSaveStates);

View file

@ -26,11 +26,16 @@ SERVICE_CONSTRUCT_IMPL(Service::CAM::Module)
namespace Service::CAM { namespace Service::CAM {
template <class Archive> template <class Archive>
void Module::serialize(Archive& ar, const unsigned int) { void Module::serialize(Archive& ar, const unsigned int file_version) {
ar& cameras; ar& cameras;
ar& ports; ar& ports;
ar& is_camera_reload_pending; ar& is_camera_reload_pending;
if (Archive::is_loading::value) { if (file_version > 0) {
ar& initialized;
} else {
initialized = true;
}
if (Archive::is_loading::value && initialized) {
for (int i = 0; i < NumCameras; i++) { for (int i = 0; i < NumCameras; i++) {
LoadCameraImplementation(cameras[i], i); LoadCameraImplementation(cameras[i], i);
} }
@ -1077,6 +1082,8 @@ void Module::Interface::DriverInitialize(Kernel::HLERequestContext& ctx) {
port.Clear(); port.Clear();
} }
cam->initialized = true;
rb.Push(RESULT_SUCCESS); rb.Push(RESULT_SUCCESS);
LOG_DEBUG(Service_CAM, "called"); LOG_DEBUG(Service_CAM, "called");
@ -1093,6 +1100,8 @@ void Module::Interface::DriverFinalize(Kernel::HLERequestContext& ctx) {
camera.impl = nullptr; camera.impl = nullptr;
} }
cam->initialized = false;
rb.Push(RESULT_SUCCESS); rb.Push(RESULT_SUCCESS);
LOG_DEBUG(Service_CAM, "called"); LOG_DEBUG(Service_CAM, "called");

View file

@ -757,6 +757,7 @@ private:
void LoadCameraImplementation(CameraConfig& camera, int camera_id); void LoadCameraImplementation(CameraConfig& camera, int camera_id);
Core::System& system; Core::System& system;
bool initialized{};
std::array<CameraConfig, NumCameras> cameras; std::array<CameraConfig, NumCameras> cameras;
std::array<PortConfig, 2> ports; std::array<PortConfig, 2> ports;
Core::TimingEventType* completion_event_callback; Core::TimingEventType* completion_event_callback;
@ -764,7 +765,7 @@ private:
std::atomic<bool> is_camera_reload_pending{false}; std::atomic<bool> is_camera_reload_pending{false};
template <class Archive> template <class Archive>
void serialize(Archive& ar, const unsigned int); void serialize(Archive& ar, const unsigned int file_version);
friend class boost::serialization::access; friend class boost::serialization::access;
}; };
@ -775,4 +776,5 @@ void InstallInterfaces(Core::System& system);
} // namespace Service::CAM } // namespace Service::CAM
SERVICE_CONSTRUCT(Service::CAM::Module) SERVICE_CONSTRUCT(Service::CAM::Module)
BOOST_CLASS_VERSION(Service::CAM::Module, 1)
BOOST_CLASS_VERSION(Service::CAM::Module::CameraConfig, 1) BOOST_CLASS_VERSION(Service::CAM::Module::CameraConfig, 1)