X-Git-Url: http://dolda2000.com/gitweb/?p=automanga.git;a=blobdiff_plain;f=manga%2Freader.py;h=6694ecde35d5b663eb94603a646fc3ccfdb60582;hp=73b6bd4726c810078f446e94005cefb7449aa7f5;hb=1aa34ec9cf4ddd9dab038465fa51a96747c8a488;hpb=0b60fcf810e2197790f6eb953ce078fd62c6e4f1 diff --git a/manga/reader.py b/manga/reader.py index 73b6bd4..6694ecd 100644 --- a/manga/reader.py +++ b/manga/reader.py @@ -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):