[gnome-boxes] screenshot: make get_screenshot_filename () reusable



commit 7e9b161e901eb31960ee844340824ae33217e366
Author: Marc-Andrà Lureau <marcandre lureau gmail com>
Date:   Sun Aug 5 14:51:00 2012 +0200

    screenshot: make get_screenshot_filename () reusable
    
    https://bugzilla.gnome.org/show_bug.cgi?id=681246

 src/machine.vala |   20 ++++++++++++--------
 src/util.vala    |    4 ++++
 2 files changed, 16 insertions(+), 8 deletions(-)
---
diff --git a/src/machine.vala b/src/machine.vala
index 9001854..9352da7 100644
--- a/src/machine.vala
+++ b/src/machine.vala
@@ -178,7 +178,7 @@ private abstract class Boxes.Machine: Boxes.CollectionItem, Boxes.IPropertiesPro
     }
 
     public string get_screenshot_filename () {
-        return get_user_pkgcache (config.uuid + "-screenshot.png");
+        return Boxes.get_screenshot_filename (config.uuid);
     }
 
     public virtual async Gdk.Pixbuf? take_screenshot () throws GLib.Error {
@@ -232,6 +232,14 @@ private abstract class Boxes.Machine: Boxes.CollectionItem, Boxes.IPropertiesPro
         return state == MachineState.RUNNING;
     }
 
+    private void save_pixbuf_as_screenshot (Gdk.Pixbuf? pixbuf) {
+        try {
+            pixbuf.save (get_screenshot_filename (), "png");
+        } catch (GLib.Error error) {
+            warning (error.message);
+        }
+    }
+
     public void set_screenshot (Gdk.Pixbuf? large_screenshot, bool save) {
         if (large_screenshot != null) {
             var pw = large_screenshot.get_width ();
@@ -245,15 +253,11 @@ private abstract class Boxes.Machine: Boxes.CollectionItem, Boxes.IPropertiesPro
 
             pixbuf = draw_vm (small_screenshot, SCREENSHOT_WIDTH, SCREENSHOT_HEIGHT);
             machine_actor.set_screenshot (large_screenshot); // high resolution
+            if (save)
+                save_pixbuf_as_screenshot (small_screenshot);
 
-            if (save) {
-                try {
-                    small_screenshot.save (get_screenshot_filename (), "png");
-                } catch (GLib.Error error) {
-                }
-            }
         } else if (pixbuf == null) {
-            pixbuf = draw_fallback_vm (SCREENSHOT_WIDTH, SCREENSHOT_HEIGHT);
+            pixbuf = draw_fallback_vm ();
             machine_actor.set_screenshot (pixbuf);
         }
     }
diff --git a/src/util.vala b/src/util.vala
index 98576a6..2871e54 100644
--- a/src/util.vala
+++ b/src/util.vala
@@ -74,6 +74,10 @@ namespace Boxes {
         return Path.build_filename (dir, file_name);
     }
 
+    public string get_screenshot_filename (string prefix) {
+        return get_user_pkgcache (prefix + "-screenshot.png");
+    }
+
     public void ensure_directory (string dir) {
         try {
             var file = GLib.File.new_for_path (dir);



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