[gnome-games] retro-runner: Load sram after boot and not before for no-snapshot cases



commit b65df10f1f885e28137f1da80e3f9719087bc81e
Author: Alexander Mikhaylenko <alexm gnome org>
Date:   Fri Mar 19 19:46:08 2021 +0500

    retro-runner: Load sram after boot and not before for no-snapshot cases
    
    Welp. I suppoes Citra just doesn't use sram and that's the only reason it
    works.

 plugins/nintendo-64/src/nintendo-64-runner.vala |  2 +-
 plugins/nintendo-ds/src/nintendo-ds-runner.vala |  2 +-
 src/retro/retro-runner.vala                     | 27 ++++++++++++-------------
 3 files changed, 15 insertions(+), 16 deletions(-)
---
diff --git a/plugins/nintendo-64/src/nintendo-64-runner.vala b/plugins/nintendo-64/src/nintendo-64-runner.vala
index 3ecd922b..ca45cf41 100644
--- a/plugins/nintendo-64/src/nintendo-64-runner.vala
+++ b/plugins/nintendo-64/src/nintendo-64-runner.vala
@@ -112,7 +112,7 @@ private class Games.Nintendo64Runner : RetroRunner {
                pak4 = n64_snapshot.pak4;
        }
 
-       protected override void reset_with_snapshot (Snapshot? last_snapshot) throws Error {
+       protected override void reset_with_snapshot (Snapshot last_snapshot) throws Error {
                base.reset_with_snapshot (last_snapshot);
 
                if (last_snapshot == null) {
diff --git a/plugins/nintendo-ds/src/nintendo-ds-runner.vala b/plugins/nintendo-ds/src/nintendo-ds-runner.vala
index 400f3658..d34d9da0 100644
--- a/plugins/nintendo-ds/src/nintendo-ds-runner.vala
+++ b/plugins/nintendo-ds/src/nintendo-ds-runner.vala
@@ -190,7 +190,7 @@ private class Games.NintendoDsRunner : RetroRunner {
                view_bottom_screen = ds_snapshot.view_bottom_screen;
        }
 
-       protected override void reset_with_snapshot (Snapshot? last_snapshot) throws Error {
+       protected override void reset_with_snapshot (Snapshot last_snapshot) throws Error {
                base.reset_with_snapshot (last_snapshot);
 
                screen_layout = ScreenLayout.TOP_BOTTOM;
diff --git a/src/retro/retro-runner.vala b/src/retro/retro-runner.vala
index 11891a8b..1e47d10b 100644
--- a/src/retro/retro-runner.vala
+++ b/src/retro/retro-runner.vala
@@ -219,27 +219,29 @@ public class Games.RetroRunner : Object, Runner {
 
                        tmp_save_dir = create_tmp_save_dir ();
 
-                       if (snapshot != null)
+                       if (snapshot != null) {
                                snapshot.copy_save_dir_to (tmp_save_dir);
-                       else {
+                       } else {
                                var path = get_fallback_save_directory_path ();
-
-                               var save_ram_path = Path.build_filename (path, "save");
                                var save_dir = File.new_for_path (Path.build_filename (path, "save-dir"));
 
-                               if (FileUtils.test (save_ram_path, FileTest.EXISTS) &&
-                                   core.get_memory_size (Retro.MemoryType.SAVE_RAM) > 0)
-                                       core.load_memory (Retro.MemoryType.SAVE_RAM, save_ram_path);
-
                                FileOperations.copy_contents (save_dir, File.new_for_path (tmp_save_dir));
                        }
 
                        prepare_core ();
 
-                       reset_with_snapshot (snapshot);
+                       if (snapshot != null) {
+                               reset_with_snapshot (snapshot);
 
-                       if (snapshot != null)
                                preview_snapshot (snapshot);
+                       } else {
+                               var path = get_fallback_save_directory_path ();
+                               var save_ram_path = Path.build_filename (path, "save");
+
+                               if (FileUtils.test (save_ram_path, FileTest.EXISTS) &&
+                                   core.get_memory_size (Retro.MemoryType.SAVE_RAM) > 0)
+                                       core.load_memory (Retro.MemoryType.SAVE_RAM, save_ram_path);
+                       }
                }
                catch (RetroError.MODULE_NOT_FOUND e) {
                        debug ("%s\n", e.message);
@@ -536,10 +538,7 @@ public class Games.RetroRunner : Object, Runner {
                        media_set.selected_media_number = snapshot.get_media_data ();
        }
 
-       protected virtual void reset_with_snapshot (Snapshot? last_snapshot) throws Error {
-               if (last_snapshot == null)
-                       return;
-
+       protected virtual void reset_with_snapshot (Snapshot last_snapshot) throws Error {
                load_save_ram (last_snapshot.get_save_ram_path ());
 
                if (last_snapshot.has_media_data ())


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]