[gnome-games] retro-runner: Add core_supports_snapshotting



commit b043c074e3772fda65bba93e9c50f1806d868102
Author: Adrien Plazas <kekun plazas laposte net>
Date:   Sun Mar 6 19:25:43 2016 +0100

    retro-runner: Add core_supports_snapshotting
    
    This will be used in the next commit to check if we can safely quit a
    game.

 plugins/amiga/src/amiga-plugin.vala                |    3 ++-
 plugins/atari-2600/src/atari-2600-plugin.vala      |    3 ++-
 plugins/atari-7800/src/atari-7800-plugin.vala      |    3 ++-
 plugins/doom/src/doom-plugin.vala                  |    3 ++-
 plugins/dreamcast/src/dreamcast-plugin.vala        |    3 ++-
 .../src/game-boy-advance-plugin.vala               |    3 ++-
 plugins/game-boy/src/game-boy-plugin.vala          |    3 ++-
 plugins/game-cube/src/game-cube-plugin.vala        |    3 ++-
 plugins/mame/src/mame-game.vala                    |    3 ++-
 .../master-system/src/master-system-plugin.vala    |    3 ++-
 plugins/mega-drive/src/mega-drive-plugin.vala      |    3 ++-
 .../neo-geo-pocket/src/neo-geo-pocket-plugin.vala  |    3 ++-
 plugins/nes/src/nes-plugin.vala                    |    3 ++-
 plugins/nintendo-64/src/nintendo-64-plugin.vala    |    3 ++-
 plugins/nintendo-ds/src/nintendo-ds-plugin.vala    |    3 ++-
 plugins/pc-engine/src/pc-engine-plugin.vala        |    3 ++-
 plugins/sega-saturn/src/sega-saturn-game.vala      |    3 ++-
 plugins/snes/src/snes-plugin.vala                  |    3 ++-
 plugins/wii-ware/src/wii-ware-plugin.vala          |    3 ++-
 plugins/wii/src/wii-plugin.vala                    |    3 ++-
 src/retro/retro-runner.vala                        |   19 ++++++++++++++++++-
 21 files changed, 58 insertions(+), 21 deletions(-)
---
diff --git a/plugins/amiga/src/amiga-plugin.vala b/plugins/amiga/src/amiga-plugin.vala
index e77bb47..a27b097 100644
--- a/plugins/amiga/src/amiga-plugin.vala
+++ b/plugins/amiga/src/amiga-plugin.vala
@@ -4,6 +4,7 @@ private class Games.AmigaPlugin : Object, Plugin {
        private const string FINGERPRINT_PREFIX = "amiga";
        private const string MIME_TYPE = "application/x-amiga-disk-format";
        private const string MODULE_BASENAME = "libretro-amiga.so";
+       private const bool SUPPORTS_SNAPSHOTTING = false;
 
        public GameSource get_game_source () throws Error {
                var query = new MimeTypeTrackerQuery (MIME_TYPE, game_for_uri);
@@ -18,7 +19,7 @@ private class Games.AmigaPlugin : Object, Plugin {
                var uid = new FingerprintUid (uri, FINGERPRINT_PREFIX);
                var title = new FilenameTitle (uri);
                var cover = new DummyCover ();
-               var runner =  new RetroRunner (MODULE_BASENAME, uri, uid);
+               var runner =  new RetroRunner (MODULE_BASENAME, uri, uid, SUPPORTS_SNAPSHOTTING);
 
                return new GenericGame (title, cover, runner);
        }
diff --git a/plugins/atari-2600/src/atari-2600-plugin.vala b/plugins/atari-2600/src/atari-2600-plugin.vala
index ac339fb..683acfc 100644
--- a/plugins/atari-2600/src/atari-2600-plugin.vala
+++ b/plugins/atari-2600/src/atari-2600-plugin.vala
@@ -4,6 +4,7 @@ private class Games.Atari2600 : Object, Plugin {
        private const string FINGERPRINT_PREFIX = "atari-2600";
        private const string MIME_TYPE = "application/x-atari-2600-rom";
        private const string MODULE_BASENAME = "libretro-atari-2600.so";
+       private const bool SUPPORTS_SNAPSHOTTING = false;
 
        public GameSource get_game_source () throws Error {
                var query = new MimeTypeTrackerQuery (MIME_TYPE, game_for_uri);
@@ -18,7 +19,7 @@ private class Games.Atari2600 : Object, Plugin {
                var uid = new FingerprintUid (uri, FINGERPRINT_PREFIX);
                var title = new FilenameTitle (uri);
                var cover = new DummyCover ();
-               var runner =  new RetroRunner (MODULE_BASENAME, uri, uid);
+               var runner =  new RetroRunner (MODULE_BASENAME, uri, uid, SUPPORTS_SNAPSHOTTING);
 
                return new GenericGame (title, cover, runner);
        }
diff --git a/plugins/atari-7800/src/atari-7800-plugin.vala b/plugins/atari-7800/src/atari-7800-plugin.vala
index 694ded1..5546b1a 100644
--- a/plugins/atari-7800/src/atari-7800-plugin.vala
+++ b/plugins/atari-7800/src/atari-7800-plugin.vala
@@ -4,6 +4,7 @@ private class Games.Atari7800 : Object, Plugin {
        private const string FINGERPRINT_PREFIX = "atari-7800";
        private const string MIME_TYPE = "application/x-atari-7800-rom";
        private const string MODULE_BASENAME = "libretro-atari-7800.so";
+       private const bool SUPPORTS_SNAPSHOTTING = false;
 
        public GameSource get_game_source () throws Error {
                var query = new MimeTypeTrackerQuery (MIME_TYPE, game_for_uri);
@@ -18,7 +19,7 @@ private class Games.Atari7800 : Object, Plugin {
                var uid = new FingerprintUid (uri, FINGERPRINT_PREFIX);
                var title = new FilenameTitle (uri);
                var cover = new DummyCover ();
-               var runner =  new RetroRunner (MODULE_BASENAME, uri, uid);
+               var runner =  new RetroRunner (MODULE_BASENAME, uri, uid, SUPPORTS_SNAPSHOTTING);
 
                return new GenericGame (title, cover, runner);
        }
diff --git a/plugins/doom/src/doom-plugin.vala b/plugins/doom/src/doom-plugin.vala
index f0aa2ac..ac8b74c 100644
--- a/plugins/doom/src/doom-plugin.vala
+++ b/plugins/doom/src/doom-plugin.vala
@@ -4,6 +4,7 @@ private class Games.DoomPlugin : Object, Plugin {
        private const string FINGERPRINT_PREFIX = "doom";
        private const string MIME_TYPE = "application/x-doom-wad";
        private const string MODULE_BASENAME = "libretro-doom.so";
+       private const bool SUPPORTS_SNAPSHOTTING = false;
 
        public GameSource get_game_source () throws Error {
                var query = new MimeTypeTrackerQuery (MIME_TYPE, game_for_uri);
@@ -18,7 +19,7 @@ private class Games.DoomPlugin : Object, Plugin {
                var uid = new FingerprintUid (uri, FINGERPRINT_PREFIX);
                var title = new FilenameTitle (uri);
                var cover = new DummyCover ();
-               var runner =  new RetroRunner (MODULE_BASENAME, uri, uid);
+               var runner =  new RetroRunner (MODULE_BASENAME, uri, uid, SUPPORTS_SNAPSHOTTING);
 
                return new GenericGame (title, cover, runner);
        }
diff --git a/plugins/dreamcast/src/dreamcast-plugin.vala b/plugins/dreamcast/src/dreamcast-plugin.vala
index a938331..7745329 100644
--- a/plugins/dreamcast/src/dreamcast-plugin.vala
+++ b/plugins/dreamcast/src/dreamcast-plugin.vala
@@ -3,6 +3,7 @@
 private class Games.DreamcastPlugin : Object, Plugin {
        private const string MIME_TYPE = "application/x-dc-rom";
        private const string MODULE_BASENAME = "libretro-dreamcast.so";
+       private const bool SUPPORTS_SNAPSHOTTING = false;
 
        public GameSource get_game_source () throws Error {
                var query = new MimeTypeTrackerQuery (MIME_TYPE, game_for_uri);
@@ -21,7 +22,7 @@ private class Games.DreamcastPlugin : Object, Plugin {
                var uid = new DreamcastUid (header);
                var title = new FilenameTitle (uri);
                var cover = new DummyCover ();
-               var runner =  new RetroRunner (MODULE_BASENAME, uri, uid);
+               var runner =  new RetroRunner (MODULE_BASENAME, uri, uid, SUPPORTS_SNAPSHOTTING);
 
                return new GenericGame (title, cover, runner);
        }
diff --git a/plugins/game-boy-advance/src/game-boy-advance-plugin.vala 
b/plugins/game-boy-advance/src/game-boy-advance-plugin.vala
index 7a22396..28d4bf3 100644
--- a/plugins/game-boy-advance/src/game-boy-advance-plugin.vala
+++ b/plugins/game-boy-advance/src/game-boy-advance-plugin.vala
@@ -4,6 +4,7 @@ private class Games.GameBoyAdvancePlugin : Object, Plugin {
        private const string FINGERPRINT_PREFIX = "game-boy-advance";
        private const string MIME_TYPE = "application/x-gba-rom";
        private const string MODULE_BASENAME = "libretro-game-boy-advance.so";
+       private const bool SUPPORTS_SNAPSHOTTING = true;
 
        public GameSource get_game_source () throws Error {
                var query = new MimeTypeTrackerQuery (MIME_TYPE, game_for_uri);
@@ -18,7 +19,7 @@ private class Games.GameBoyAdvancePlugin : Object, Plugin {
                var uid = new FingerprintUid (uri, FINGERPRINT_PREFIX);
                var title = new FilenameTitle (uri);
                var cover = new DummyCover ();
-               var runner =  new RetroRunner (MODULE_BASENAME, uri, uid);
+               var runner =  new RetroRunner (MODULE_BASENAME, uri, uid, SUPPORTS_SNAPSHOTTING);
 
                return new GenericGame (title, cover, runner);
        }
diff --git a/plugins/game-boy/src/game-boy-plugin.vala b/plugins/game-boy/src/game-boy-plugin.vala
index 5f5f0c1..78ef0d5 100644
--- a/plugins/game-boy/src/game-boy-plugin.vala
+++ b/plugins/game-boy/src/game-boy-plugin.vala
@@ -4,6 +4,7 @@ private class Games.GameBoyPlugin : Object, Plugin {
        private const string FINGERPRINT_PREFIX = "game-boy";
        private const string MIME_TYPE = "application/x-gameboy-rom";
        private const string MODULE_BASENAME = "libretro-game-boy.so";
+       private const bool SUPPORTS_SNAPSHOTTING = true;
 
        public GameSource get_game_source () throws Error {
                var query = new MimeTypeTrackerQuery (MIME_TYPE, game_for_uri);
@@ -22,7 +23,7 @@ private class Games.GameBoyPlugin : Object, Plugin {
                var uid = new FingerprintUid (uri, FINGERPRINT_PREFIX);
                var title = new FilenameTitle (uri);
                var cover = new DummyCover ();
-               var runner =  new RetroRunner (MODULE_BASENAME, uri, uid);
+               var runner =  new RetroRunner (MODULE_BASENAME, uri, uid, SUPPORTS_SNAPSHOTTING);
 
                return new GenericGame (title, cover, runner);
        }
diff --git a/plugins/game-cube/src/game-cube-plugin.vala b/plugins/game-cube/src/game-cube-plugin.vala
index d9e41ff..2e32bb8 100644
--- a/plugins/game-cube/src/game-cube-plugin.vala
+++ b/plugins/game-cube/src/game-cube-plugin.vala
@@ -3,6 +3,7 @@
 private class Games.GameCubePlugin : Object, Plugin {
        private const string MIME_TYPE = "application/x-gamecube-rom";
        private const string MODULE_BASENAME = "libretro-game-cube.so";
+       private const bool SUPPORTS_SNAPSHOTTING = false;
 
        public GameSource get_game_source () throws Error {
                var query = new MimeTypeTrackerQuery (MIME_TYPE, game_for_uri);
@@ -21,7 +22,7 @@ private class Games.GameCubePlugin : Object, Plugin {
                var uid = new GameCubeUid (header);
                var title = new FilenameTitle (uri);
                var cover = new DummyCover ();
-               var runner =  new RetroRunner (MODULE_BASENAME, uri, uid);
+               var runner =  new RetroRunner (MODULE_BASENAME, uri, uid, SUPPORTS_SNAPSHOTTING);
 
                return new GenericGame (title, cover, runner);
        }
diff --git a/plugins/mame/src/mame-game.vala b/plugins/mame/src/mame-game.vala
index 0c6d4e5..7f355e2 100644
--- a/plugins/mame/src/mame-game.vala
+++ b/plugins/mame/src/mame-game.vala
@@ -3,6 +3,7 @@
 private class Games.MameGame : Object, Game {
        private const string FINGERPRINT_PREFIX = "mame";
        private const string MODULE_BASENAME = "libretro-mame.so";
+       private const bool SUPPORTS_SNAPSHOTTING = false;
 
        private FingerprintUid _uid;
        public FingerprintUid uid {
@@ -45,6 +46,6 @@ private class Games.MameGame : Object, Game {
        }
 
        public Runner get_runner () throws Error {
-               return new RetroRunner (MODULE_BASENAME, uri, uid);
+               return new RetroRunner (MODULE_BASENAME, uri, uid, SUPPORTS_SNAPSHOTTING);
        }
 }
diff --git a/plugins/master-system/src/master-system-plugin.vala 
b/plugins/master-system/src/master-system-plugin.vala
index f65154e..5aef3aa 100644
--- a/plugins/master-system/src/master-system-plugin.vala
+++ b/plugins/master-system/src/master-system-plugin.vala
@@ -4,6 +4,7 @@ private class Games.MasterSystemPlugin : Object, Plugin {
        private const string FINGERPRINT_PREFIX = "master-system";
        private const string MIME_TYPE = "application/x-sms-rom";
        private const string MODULE_BASENAME = "libretro-master-system.so";
+       private const bool SUPPORTS_SNAPSHOTTING = true;
 
        public GameSource get_game_source () throws Error {
                var query = new MimeTypeTrackerQuery (MIME_TYPE, game_for_uri);
@@ -22,7 +23,7 @@ private class Games.MasterSystemPlugin : Object, Plugin {
                var uid = new FingerprintUid (uri, FINGERPRINT_PREFIX);
                var title = new FilenameTitle (uri);
                var cover = new DummyCover ();
-               var runner =  new RetroRunner (MODULE_BASENAME, uri, uid);
+               var runner =  new RetroRunner (MODULE_BASENAME, uri, uid, SUPPORTS_SNAPSHOTTING);
 
                return new GenericGame (title, cover, runner);
        }
diff --git a/plugins/mega-drive/src/mega-drive-plugin.vala b/plugins/mega-drive/src/mega-drive-plugin.vala
index bc6da12..775d968 100644
--- a/plugins/mega-drive/src/mega-drive-plugin.vala
+++ b/plugins/mega-drive/src/mega-drive-plugin.vala
@@ -4,6 +4,7 @@ private class Games.MegaDrivePlugin : Object, Plugin {
        private const string FINGERPRINT_PREFIX = "mega-drive";
        private const string MIME_TYPE = "application/x-genesis-rom";
        private const string MODULE_BASENAME = "libretro-pc-engine.so";
+       private const bool SUPPORTS_SNAPSHOTTING = true;
 
        public GameSource get_game_source () throws Error {
                var query = new MimeTypeTrackerQuery (MIME_TYPE, game_for_uri);
@@ -22,7 +23,7 @@ private class Games.MegaDrivePlugin : Object, Plugin {
                var uid = new FingerprintUid (uri, FINGERPRINT_PREFIX);
                var title = new FilenameTitle (uri);
                var cover = new DummyCover ();
-               var runner =  new RetroRunner (MODULE_BASENAME, uri, uid);
+               var runner =  new RetroRunner (MODULE_BASENAME, uri, uid, SUPPORTS_SNAPSHOTTING);
 
                return new GenericGame (title, cover, runner);
        }
diff --git a/plugins/neo-geo-pocket/src/neo-geo-pocket-plugin.vala 
b/plugins/neo-geo-pocket/src/neo-geo-pocket-plugin.vala
index 87b82e0..d92141a 100644
--- a/plugins/neo-geo-pocket/src/neo-geo-pocket-plugin.vala
+++ b/plugins/neo-geo-pocket/src/neo-geo-pocket-plugin.vala
@@ -4,6 +4,7 @@ private class Games.NeoGeoPocketPlugin : Object, Plugin {
        private const string FINGERPRINT_PREFIX = "neo-geo-pocket";
        private const string MIME_TYPE = "application/x-neo-geo-pocket-rom";
        private const string MODULE_BASENAME = "libretro-neo-geo-pocket.so";
+       private const bool SUPPORTS_SNAPSHOTTING = true;
 
        public GameSource get_game_source () throws Error {
                var query = new MimeTypeTrackerQuery (MIME_TYPE, game_for_uri);
@@ -18,7 +19,7 @@ private class Games.NeoGeoPocketPlugin : Object, Plugin {
                var uid = new FingerprintUid (uri, FINGERPRINT_PREFIX);
                var title = new FilenameTitle (uri);
                var cover = new DummyCover ();
-               var runner =  new RetroRunner (MODULE_BASENAME, uri, uid);
+               var runner =  new RetroRunner (MODULE_BASENAME, uri, uid, SUPPORTS_SNAPSHOTTING);
 
                return new GenericGame (title, cover, runner);
        }
diff --git a/plugins/nes/src/nes-plugin.vala b/plugins/nes/src/nes-plugin.vala
index 7d3192b..3a76025 100644
--- a/plugins/nes/src/nes-plugin.vala
+++ b/plugins/nes/src/nes-plugin.vala
@@ -4,6 +4,7 @@ private class Games.NesPlugin : Object, Plugin {
        private const string FINGERPRINT_PREFIX = "nes";
        private const string MIME_TYPE = "application/x-nes-rom";
        private const string MODULE_BASENAME = "libretro-nes.so";
+       private const bool SUPPORTS_SNAPSHOTTING = true;
 
        public GameSource get_game_source () throws Error {
                var query = new MimeTypeTrackerQuery (MIME_TYPE, game_for_uri);
@@ -18,7 +19,7 @@ private class Games.NesPlugin : Object, Plugin {
                var uid = new FingerprintUid (uri, FINGERPRINT_PREFIX);
                var title = new FilenameTitle (uri);
                var cover = new DummyCover ();
-               var runner =  new RetroRunner (MODULE_BASENAME, uri, uid);
+               var runner =  new RetroRunner (MODULE_BASENAME, uri, uid, SUPPORTS_SNAPSHOTTING);
 
                return new GenericGame (title, cover, runner);
        }
diff --git a/plugins/nintendo-64/src/nintendo-64-plugin.vala b/plugins/nintendo-64/src/nintendo-64-plugin.vala
index 9afdab8..8151179 100644
--- a/plugins/nintendo-64/src/nintendo-64-plugin.vala
+++ b/plugins/nintendo-64/src/nintendo-64-plugin.vala
@@ -4,6 +4,7 @@ private class Games.Nintendo64Plugin : Object, Plugin {
        private const string FINGERPRINT_PREFIX = "nintendo-64";
        private const string MIME_TYPE = "application/x-n64-rom";
        private const string MODULE_BASENAME = "libretro-nintendo-64.so";
+       private const bool SUPPORTS_SNAPSHOTTING = false;
 
        public GameSource get_game_source () throws Error {
                var query = new MimeTypeTrackerQuery (MIME_TYPE, game_for_uri);
@@ -18,7 +19,7 @@ private class Games.Nintendo64Plugin : Object, Plugin {
                var uid = new FingerprintUid (uri, FINGERPRINT_PREFIX);
                var title = new FilenameTitle (uri);
                var cover = new DummyCover ();
-               var runner =  new RetroRunner (MODULE_BASENAME, uri, uid);
+               var runner =  new RetroRunner (MODULE_BASENAME, uri, uid, SUPPORTS_SNAPSHOTTING);
 
                return new GenericGame (title, cover, runner);
        }
diff --git a/plugins/nintendo-ds/src/nintendo-ds-plugin.vala b/plugins/nintendo-ds/src/nintendo-ds-plugin.vala
index 333e975..cf45391 100644
--- a/plugins/nintendo-ds/src/nintendo-ds-plugin.vala
+++ b/plugins/nintendo-ds/src/nintendo-ds-plugin.vala
@@ -4,6 +4,7 @@ private class Games.NintendoDsPlugin : Object, Plugin {
        private const string FINGERPRINT_PREFIX = "nintendo-ds";
        private const string MIME_TYPE = "application/x-nintendo-ds-rom";
        private const string MODULE_BASENAME = "libretro-nintendo-ds.so";
+       private const bool SUPPORTS_SNAPSHOTTING = false;
 
        public GameSource get_game_source () throws Error {
                var query = new MimeTypeTrackerQuery (MIME_TYPE, game_for_uri);
@@ -18,7 +19,7 @@ private class Games.NintendoDsPlugin : Object, Plugin {
                var uid = new FingerprintUid (uri, FINGERPRINT_PREFIX);
                var title = new FilenameTitle (uri);
                var cover = new DummyCover ();
-               var runner =  new RetroRunner (MODULE_BASENAME, uri, uid);
+               var runner =  new RetroRunner (MODULE_BASENAME, uri, uid, SUPPORTS_SNAPSHOTTING);
 
                return new GenericGame (title, cover, runner);
        }
diff --git a/plugins/pc-engine/src/pc-engine-plugin.vala b/plugins/pc-engine/src/pc-engine-plugin.vala
index 7539751..59a74cf 100644
--- a/plugins/pc-engine/src/pc-engine-plugin.vala
+++ b/plugins/pc-engine/src/pc-engine-plugin.vala
@@ -4,6 +4,7 @@ private class Games.PcEnginePlugin : Object, Plugin {
        private const string FINGERPRINT_PREFIX = "pc-engine";
        private const string MIME_TYPE = "application/x-pc-engine-rom";
        private const string MODULE_BASENAME = "libretro-pc-engine.so";
+       private const bool SUPPORTS_SNAPSHOTTING = true;
 
        public GameSource get_game_source () throws Error {
                var query = new MimeTypeTrackerQuery (MIME_TYPE, game_for_uri);
@@ -18,7 +19,7 @@ private class Games.PcEnginePlugin : Object, Plugin {
                var uid = new FingerprintUid (uri, FINGERPRINT_PREFIX);
                var title = new FilenameTitle (uri);
                var cover = new DummyCover ();
-               var runner =  new RetroRunner (MODULE_BASENAME, uri, uid);
+               var runner =  new RetroRunner (MODULE_BASENAME, uri, uid, SUPPORTS_SNAPSHOTTING);
 
                return new GenericGame (title, cover, runner);
        }
diff --git a/plugins/sega-saturn/src/sega-saturn-game.vala b/plugins/sega-saturn/src/sega-saturn-game.vala
index 6979c9e..f47f7d3 100644
--- a/plugins/sega-saturn/src/sega-saturn-game.vala
+++ b/plugins/sega-saturn/src/sega-saturn-game.vala
@@ -2,6 +2,7 @@
 
 private class Games.SegaSaturnGame : Object, Game {
        private const string MODULE_BASENAME = "libretro-saturn.so";
+       private const bool SUPPORTS_SNAPSHOTTING = false;
 
        private SegaSaturnUid _uid;
        public SegaSaturnUid uid {
@@ -43,7 +44,7 @@ private class Games.SegaSaturnGame : Object, Game {
        }
 
        public Runner get_runner () throws Error {
-               return new RetroRunner (MODULE_BASENAME, uri, uid);
+               return new RetroRunner (MODULE_BASENAME, uri, uid, SUPPORTS_SNAPSHOTTING);
        }
 
        private string? get_associated_cue_sheet (File file) throws Error {
diff --git a/plugins/snes/src/snes-plugin.vala b/plugins/snes/src/snes-plugin.vala
index 5a4c91c..6038a43 100644
--- a/plugins/snes/src/snes-plugin.vala
+++ b/plugins/snes/src/snes-plugin.vala
@@ -4,6 +4,7 @@ private class Games.SnesPlugin : Object, Plugin {
        private const string FINGERPRINT_PREFIX = "snes";
        private const string MIME_TYPE = "application/vnd.nintendo.snes.rom";
        private const string MODULE_BASENAME = "libretro-snes.so";
+       private const bool SUPPORTS_SNAPSHOTTING = true;
 
        public GameSource get_game_source () throws Error {
                var query = new MimeTypeTrackerQuery (MIME_TYPE, game_for_uri);
@@ -18,7 +19,7 @@ private class Games.SnesPlugin : Object, Plugin {
                var uid = new FingerprintUid (uri, FINGERPRINT_PREFIX);
                var title = new FilenameTitle (uri);
                var cover = new DummyCover ();
-               var runner =  new RetroRunner (MODULE_BASENAME, uri, uid);
+               var runner =  new RetroRunner (MODULE_BASENAME, uri, uid, SUPPORTS_SNAPSHOTTING);
 
                return new GenericGame (title, cover, runner);
        }
diff --git a/plugins/wii-ware/src/wii-ware-plugin.vala b/plugins/wii-ware/src/wii-ware-plugin.vala
index 30c944d..11bb521 100644
--- a/plugins/wii-ware/src/wii-ware-plugin.vala
+++ b/plugins/wii-ware/src/wii-ware-plugin.vala
@@ -4,6 +4,7 @@ private class Games.WiiWarePlugin : Object, Plugin {
        private const string FINGERPRINT_PREFIX = "wii-ware";
        private const string MIME_TYPE = "application/x-wii-wad";
        private const string MODULE_BASENAME = "libretro-wii.so";
+       private const bool SUPPORTS_SNAPSHOTTING = false;
 
        public GameSource get_game_source () throws Error {
                var query = new MimeTypeTrackerQuery (MIME_TYPE, game_for_uri);
@@ -18,7 +19,7 @@ private class Games.WiiWarePlugin : Object, Plugin {
                var uid = new FingerprintUid (uri, FINGERPRINT_PREFIX);
                var title = new FilenameTitle (uri);
                var cover = new DummyCover ();
-               var runner =  new RetroRunner (MODULE_BASENAME, uri, uid);
+               var runner =  new RetroRunner (MODULE_BASENAME, uri, uid, SUPPORTS_SNAPSHOTTING);
 
                return new GenericGame (title, cover, runner);
        }
diff --git a/plugins/wii/src/wii-plugin.vala b/plugins/wii/src/wii-plugin.vala
index 5e91bb5..89dbc51 100644
--- a/plugins/wii/src/wii-plugin.vala
+++ b/plugins/wii/src/wii-plugin.vala
@@ -3,6 +3,7 @@
 private class Games.WiiPlugin : Object, Plugin {
        private const string MIME_TYPE = "application/x-wii-rom";
        private const string MODULE_BASENAME = "libretro-wii.so";
+       private const bool SUPPORTS_SNAPSHOTTING = false;
 
        public GameSource get_game_source () throws Error {
                var query = new MimeTypeTrackerQuery (MIME_TYPE, game_for_uri);
@@ -21,7 +22,7 @@ private class Games.WiiPlugin : Object, Plugin {
                var uid = new WiiUid (header);
                var title = new FilenameTitle (uri);
                var cover = new DummyCover ();
-               var runner =  new RetroRunner (MODULE_BASENAME, uri, uid);
+               var runner =  new RetroRunner (MODULE_BASENAME, uri, uid, SUPPORTS_SNAPSHOTTING);
 
                return new GenericGame (title, cover, runner);
        }
diff --git a/src/retro/retro-runner.vala b/src/retro/retro-runner.vala
index ee9f559..0c87340 100644
--- a/src/retro/retro-runner.vala
+++ b/src/retro/retro-runner.vala
@@ -3,6 +3,9 @@
 public class Games.RetroRunner : Object, Runner {
        public bool can_resume {
                get {
+                       if (!core_supports_snapshotting)
+                               return false;
+
                        try {
                                var snapshot_path = get_snapshot_path ();
                                var file = File.new_for_path (snapshot_path);
@@ -36,6 +39,7 @@ public class Games.RetroRunner : Object, Runner {
        private string module_basename;
        private string uri;
        private Uid uid;
+       private bool core_supports_snapshotting;
 
        private bool _running;
        private bool running {
@@ -54,7 +58,7 @@ public class Games.RetroRunner : Object, Runner {
        private bool is_ready;
        private bool should_save;
 
-       public RetroRunner (string module_basename, string uri, Uid uid) {
+       public RetroRunner (string module_basename, string uri, Uid uid, bool core_supports_snapshotting) {
                is_initialized = false;
                is_ready = false;
                should_save = false;
@@ -62,6 +66,7 @@ public class Games.RetroRunner : Object, Runner {
                this.module_basename = module_basename;
                this.uri = uri;
                this.uid = uid;
+               this.core_supports_snapshotting = core_supports_snapshotting;
        }
 
        ~RetroRunner () {
@@ -290,6 +295,9 @@ public class Games.RetroRunner : Object, Runner {
        }
 
        private void save_snapshot () throws Error {
+               if (!core_supports_snapshotting)
+                       return;
+
                var size = core.serialize_size ();
                var buffer = new uint8[size];
 
@@ -305,6 +313,9 @@ public class Games.RetroRunner : Object, Runner {
        }
 
        private void load_snapshot () throws Error {
+               if (!core_supports_snapshotting)
+                       return;
+
                var snapshot_path = get_snapshot_path ();
 
                if (!FileUtils.test (snapshot_path, FileTest.EXISTS))
@@ -333,6 +344,9 @@ public class Games.RetroRunner : Object, Runner {
        }
 
        private void save_screenshot () throws Error {
+               if (!core_supports_snapshotting)
+                       return;
+
                var pixbuf = video.pixbuf;
                if (pixbuf == null)
                        return;
@@ -343,6 +357,9 @@ public class Games.RetroRunner : Object, Runner {
        }
 
        private void load_screenshot () throws Error {
+               if (!core_supports_snapshotting)
+                       return;
+
                var screenshot_path = get_screenshot_path ();
 
                if (!FileUtils.test (screenshot_path, FileTest.EXISTS))


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