[gnome-music/wip/mschraal/artrework: 5/6] albumartcache: Higher priority for I/O processes



commit 33c11bfcc8d7a2dd4a38dcf3d40086488bd06e9d
Author: Marinus Schraal <mschraal gnome org>
Date:   Wed Jan 31 16:12:36 2018 +0100

    albumartcache: Higher priority for I/O processes
    
    Test solution for closing files quicker in the art cache process to stop
    running into open file limits.
    
    Related: #121

 gnomemusic/albumartcache.py      | 18 +++++++++---------
 gnomemusic/widgets/coverstack.py |  4 ++--
 2 files changed, 11 insertions(+), 11 deletions(-)
---
diff --git a/gnomemusic/albumartcache.py b/gnomemusic/albumartcache.py
index f9d0239..9c98bf7 100644
--- a/gnomemusic/albumartcache.py
+++ b/gnomemusic/albumartcache.py
@@ -413,7 +413,7 @@ class Cache(GObject.GObject):
         if (success
                 and thumb_file.query_exists()):
             thumb_file.read_async(
-                GLib.PRIORITY_LOW, None, self._open_stream, None)
+                GLib.PRIORITY_HIGH, None, self._open_stream, None)
             return
 
         self.emit('miss')
@@ -425,7 +425,7 @@ class Cache(GObject.GObject):
         except GLib.Error as error:
             logger.warn("Error: {}, {}".format(error.domain, error.message))
             stream.close_async(
-                GLib.PRIORITY_LOW, None, self._close_stream, None)
+                GLib.PRIORITY_HIGH, None, self._close_stream, None)
             self.emit('miss')
             return
 
@@ -439,11 +439,11 @@ class Cache(GObject.GObject):
         except GLib.Error as error:
             logger.warn("Error: {}, {}".format(error.domain, error.message))
             stream.close_async(
-                GLib.PRIORITY_LOW, None, self._close_stream, None)
+                GLib.PRIORITY_HIGH, None, self._close_stream, None)
             self.emit('miss')
             return
 
-        stream.close_async(GLib.PRIORITY_LOW, None, self._close_stream, None)
+        stream.close_async(GLib.PRIORITY_HIGH, None, self._close_stream, None)
         self.emit('hit', pixbuf)
 
     @log
@@ -584,7 +584,7 @@ class EmbeddedArt(GObject.GObject):
         self._media_art.uri_async(
             MediaArt.Type.ALBUM, MediaArt.ProcessFlags.NONE,
             self._media.get_url(), self._artist, self._album,
-            GLib.PRIORITY_LOW, None, self._uri_async_cb, None)
+            GLib.PRIORITY_HIGH, None, self._uri_async_cb, None)
 
     @log
     def _uri_async_cb(self, src, result, data):
@@ -651,7 +651,7 @@ class RemoteArt(GObject.GObject):
         tmp_file, iostream = data
 
         iostream.close_async(
-            GLib.PRIORITY_LOW, None, self._close_iostream_callback, None)
+            GLib.PRIORITY_HIGH, None, self._close_iostream_callback, None)
 
         try:
             src.splice_finish(result)
@@ -678,7 +678,7 @@ class RemoteArt(GObject.GObject):
         self.emit('retrieved')
 
         tmp_file.delete_async(
-            GLib.PRIORITY_LOW, None, self._delete_callback, None)
+            GLib.PRIORITY_HIGH, None, self._delete_callback, None)
 
     @log
     def _close_iostream_callback(self, src, result, data):
@@ -708,7 +708,7 @@ class RemoteArt(GObject.GObject):
         # closed. PyGI specific issue?
         ostream.splice_async(
             istream, Gio.OutputStreamSpliceFlags.CLOSE_SOURCE |
-            Gio.OutputStreamSpliceFlags.CLOSE_TARGET, GLib.PRIORITY_LOW,
+            Gio.OutputStreamSpliceFlags.CLOSE_TARGET, GLib.PRIORITY_HIGH,
             None, self._splice_callback, [tmp_file, iostream])
 
     @log
@@ -726,4 +726,4 @@ class RemoteArt(GObject.GObject):
 
         src = Gio.File.new_for_uri(thumb_uri)
         src.read_async(
-            GLib.PRIORITY_LOW, None, self._read_callback, None)
+            GLib.PRIORITY_HIGH, None, self._read_callback, None)
diff --git a/gnomemusic/widgets/coverstack.py b/gnomemusic/widgets/coverstack.py
index fda824f..1c7d22a 100644
--- a/gnomemusic/widgets/coverstack.py
+++ b/gnomemusic/widgets/coverstack.py
@@ -22,7 +22,7 @@
 # code, but you are not obligated to do so.  If you do not wish to do so,
 # delete this exception statement from your version.
 
-from gi.repository import GObject, Gtk
+from gi.repository import GLib, GObject, Gtk
 
 from gnomemusic import log
 from gnomemusic.albumartcache import Art, DefaultIcon
@@ -78,7 +78,7 @@ class CoverStack(GObject.GObject):
 
         art = Art(self._size, media, self._scale)
         self._handler_id = art.connect('finished', self._art_retrieved)
-        art.lookup()
+        GLib.idle_add(art.lookup)
 
     @log
     def _art_retrieved(self, klass):


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