Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xGetIABooksActivity.py11
-rwxr-xr-x[-rw-r--r--]opds.py14
2 files changed, 20 insertions, 5 deletions
diff --git a/GetIABooksActivity.py b/GetIABooksActivity.py
index 0f11557..6c51fb3 100755
--- a/GetIABooksActivity.py
+++ b/GetIABooksActivity.py
@@ -455,6 +455,7 @@ class GetIABooksActivity(activity.Activity):
bottom_hbox = gtk.HBox()
if self.show_images:
+ self.__image_downloader = None
self.image = gtk.Image()
self.add_default_image()
bottom_hbox.pack_start(self.image, False, False, 10)
@@ -553,10 +554,9 @@ class GetIABooksActivity(activity.Activity):
self.add_default_image()
else:
url_image = self.selected_book.get_image_url()
+ self.add_default_image()
if url_image:
self.download_image(url_image.values()[0])
- else:
- self.add_default_image()
def get_pixbuf_from_buffer(self, image_buffer):
"""Buffer To Pixbuf"""
@@ -578,8 +578,10 @@ class GetIABooksActivity(activity.Activity):
def download_image(self, url):
self._inhibit_suspend()
- image_downloader = opds.ImageDownloader(self, url)
- image_downloader.connect('updated', self.__image_updated_cb)
+ if self.__image_downloader is not None:
+ self.__image_downloader.stop_download()
+ self.__image_downloader = opds.ImageDownloader(self, url)
+ self.__image_downloader.connect('updated', self.__image_updated_cb)
def __image_updated_cb(self, downloader, file_name):
if file_name is not None:
@@ -588,6 +590,7 @@ class GetIABooksActivity(activity.Activity):
os.remove(file_name)
else:
self.add_default_image()
+ self.__image_downloader = None
self._allow_suspend()
def add_default_image(self):
diff --git a/opds.py b/opds.py
index 29f829a..9918811 100644..100755
--- a/opds.py
+++ b/opds.py
@@ -501,9 +501,17 @@ class ImageDownloaderThread(threading.Thread):
def _get_image_result_cb(self, getter, tempfile, suggested_name):
_logger.debug("Got Cover Image %s (%s)", tempfile, suggested_name)
self._getter = None
- gobject.idle_add(self.obj.notify_updated, tempfile)
+ if not self.stopthread.is_set():
+ gobject.idle_add(self.obj.notify_updated, tempfile)
def _get_image_progress_cb(self, getter, bytes_downloaded):
+ if self.stopthread.is_set():
+ try:
+ _logger.debug('The download %s was cancelled' % getter._fname)
+ getter.cancel()
+ except:
+ _logger.debug('Got an exception while trying ' + \
+ 'to cancel download')
if self._download_content_length > 0:
_logger.debug("Downloaded %u of %u bytes...", bytes_downloaded,
self._download_content_length)
@@ -549,3 +557,7 @@ class ImageDownloader(gobject.GObject):
def notify_updated(self, temp_file):
self.emit('updated', temp_file)
+
+ def stop_download(self):
+ for thread in self.threads:
+ thread.stop()