Always close the pixbufloader.
[automanga.git] / manga / reader.py
index 73b6bd4..6694ecd 100644 (file)
@@ -1,4 +1,4 @@
-import threading, gtk, gio, gobject
+import threading, gtk, gobject
 import lib, profile
 
 class notdone(Exception): pass
@@ -75,23 +75,22 @@ class imgload(future):
         self.start()
 
     def value(self):
-        buf = bytearray()
-        with self.page.open() as st:
-            self.p = 0
-            self.st = st
-            while True:
-                read = st.read(1024)
-                if read == "":
-                    break
-                self.p += len(read)
-                buf.extend(read)
-                self.progcb()
-        self.st = None
-        with gtk.gdk.lock:
-            try:
-                return gtk.gdk.pixbuf_new_from_stream(gio.memory_input_stream_new_from_data(str(buf)))
-            finally:
-                gtk.gdk.flush()
+        buf = gtk.gdk.PixbufLoader()
+        try:
+            with self.page.open() as st:
+                self.p = 0
+                self.st = st
+                while True:
+                    read = st.read(1024)
+                    if read == "":
+                        break
+                    self.p += len(read)
+                    buf.write(read)
+                    self.progcb()
+            self.st = None
+        finally:
+            buf.close()
+        return buf.get_pixbuf()
 
     @property
     def prog(self):