[gnome-games] master-system: Support Game Gear games



commit 9878978fc0bf5dbbf41b1a394144eb76cf51b714
Author: Adrien Plazas <kekun plazas laposte net>
Date:   Wed Aug 3 10:02:26 2016 +0200

    master-system: Support Game Gear games
    
    The Game Gear MIME type have been discriminated from the Master System
    one, hence we need to explicitly look for Game Gear games.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=769472

 .../master-system/src/master-system-plugin.vala    |   31 ++++++++++++++++----
 1 files changed, 25 insertions(+), 6 deletions(-)
---
diff --git a/plugins/master-system/src/master-system-plugin.vala 
b/plugins/master-system/src/master-system-plugin.vala
index b39c8d9..6d05664 100644
--- a/plugins/master-system/src/master-system-plugin.vala
+++ b/plugins/master-system/src/master-system-plugin.vala
@@ -1,16 +1,22 @@
 // This file is part of GNOME Games. License: GPLv3
 
 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 MASTER_SYSTEM_PREFIX = "master-system";
+       private const string MASTER_SYSTEM_MIME_TYPE = "application/x-sms-rom";
+
+       private const string GAME_GEAR_PREFIX = "game-gear";
+       private const string GAME_GEAR_MIME_TYPE = "application/x-gamegear-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);
+               var master_system_query = new MimeTypeTrackerQuery (MASTER_SYSTEM_MIME_TYPE, game_for_uri);
+               var game_gear_query = new MimeTypeTrackerQuery (GAME_GEAR_MIME_TYPE, game_for_uri);
                var connection = Tracker.Sparql.Connection.@get ();
                var source = new TrackerGameSource (connection);
-               source.add_query (query);
+               source.add_query (master_system_query);
+               source.add_query (game_gear_query);
 
                return source;
        }
@@ -20,10 +26,23 @@ private class Games.MasterSystemPlugin : Object, Plugin {
                var header = new MasterSystemHeader (file);
                header.check_validity ();
 
-               var uid = new FingerprintUid (uri, FINGERPRINT_PREFIX);
+               string prefix;
+               string mime_type;
+               if (header.is_master_system ()) {
+                       prefix = MASTER_SYSTEM_PREFIX;
+                       mime_type = MASTER_SYSTEM_MIME_TYPE;
+               }
+               else if (header.is_game_gear ()) {
+                       prefix = GAME_GEAR_PREFIX;
+                       mime_type = GAME_GEAR_MIME_TYPE;
+               }
+               else
+                       assert_not_reached ();
+
+               var uid = new FingerprintUid (uri, prefix);
                var title = new FilenameTitle (uri);
                var icon = new DummyIcon ();
-               var media = new GriloMedia (title, MIME_TYPE);
+               var media = new GriloMedia (title, mime_type);
                var cover = new GriloCover (media, uid);
                var runner =  new RetroRunner (MODULE_BASENAME, uri, uid, SUPPORTS_SNAPSHOTTING);
 


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