[gnome-games] runner: Add preview_savestate()



commit 71c3dbff3869d43bccf57529b6b407cb2f860599
Author: Yetizone <andreii lisita gmail com>
Date:   Thu Aug 8 13:08:41 2019 +0300

    runner: Add preview_savestate()

 src/command/command-runner.vala |  3 +++
 src/core/runner.vala            |  1 +
 src/dummy/dummy-runner.vala     |  3 +++
 src/retro/retro-runner.vala     | 20 ++++++++++++++++++++
 4 files changed, 27 insertions(+)
---
diff --git a/src/command/command-runner.vala b/src/command/command-runner.vala
index 3fb10edf..cf220943 100644
--- a/src/command/command-runner.vala
+++ b/src/command/command-runner.vala
@@ -59,6 +59,9 @@ public class Games.CommandRunner : Object, Runner {
        public void preview_current_state () {
        }
 
+       public void preview_savestate (Savestate savestate) {
+       }
+
        public void start () throws Error {
                string? working_directory = null;
                string[]? envp = null;
diff --git a/src/core/runner.vala b/src/core/runner.vala
index b704d3a4..abdd6bab 100644
--- a/src/core/runner.vala
+++ b/src/core/runner.vala
@@ -21,6 +21,7 @@ public interface Games.Runner : Object {
 
        public abstract void capture_current_state_pixbuf ();
        public abstract void preview_current_state ();
+       public abstract void preview_savestate (Savestate savestate);
 
        public abstract bool try_create_savestate (bool is_automatic);
        public abstract void load_savestate (Savestate savestate) throws Error;
diff --git a/src/dummy/dummy-runner.vala b/src/dummy/dummy-runner.vala
index 6565820e..634ace0e 100644
--- a/src/dummy/dummy-runner.vala
+++ b/src/dummy/dummy-runner.vala
@@ -46,6 +46,9 @@ private class Games.DummyRunner : Object, Runner {
        public void preview_current_state () {
        }
 
+       public void preview_savestate (Savestate savestate) {
+       }
+
        public void start () throws Error {
        }
 
diff --git a/src/retro/retro-runner.vala b/src/retro/retro-runner.vala
index 6801a884..3b14d812 100644
--- a/src/retro/retro-runner.vala
+++ b/src/retro/retro-runner.vala
@@ -45,9 +45,11 @@ public class Games.RetroRunner : Object, Runner {
        private InputCapabilities input_capabilities;
        private Settings settings;
        private Title game_title;
+
        private Savestate[] game_savestates;
        private Savestate latest_savestate;
        private Savestate tmp_live_savestate;
+       private Savestate previewed_savestate;
 
        private Gdk.Pixbuf current_state_pixbuf;
 
@@ -158,6 +160,24 @@ public class Games.RetroRunner : Object, Runner {
                view.set_pixbuf (current_state_pixbuf);
        }
 
+       public void preview_savestate (Savestate savestate) {
+               previewed_savestate = savestate;
+
+               var screenshot_path = savestate.get_screenshot_path ();
+               Gdk.Pixbuf pixbuf = null;
+
+               // Treat errors locally because loading the savestate screenshot is not
+               // a critical operation
+               try {
+                       pixbuf = new Gdk.Pixbuf.from_file (screenshot_path);
+               }
+               catch (Error e) {
+                       warning ("Couldn't load %s: %s", screenshot_path, e.message);
+               }
+
+               view.set_pixbuf (pixbuf);
+       }
+
        public virtual Gtk.Widget? get_extra_widget () {
                return null;
        }


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