diff options
author | Manuel Kaufmann <humitos@gmail.com> | 2013-02-26 18:25:46 (GMT) |
---|---|---|
committer | Manuel QuiƱones <manuq@laptop.org> | 2013-04-11 20:25:36 (GMT) |
commit | 9d886575e4410752be01eacbb72708befcdc8df3 (patch) | |
tree | 5f586733fc9c051b45fffb74e3a6ebec529ee62c /downloadmanager.py | |
parent | 1645c3763b57bd1b18d9777990e500836e98db07 (diff) |
Download progress bar SL #4385
This patch is a workaround for a WebKit's bug[1] regarding the
'notify::progress' signal that is not emitted when it should be. So,
we use 'notify::current-size' signal instead and compare the
'current-size' with the 'total-size' to get the proper progress.
[1] https://bugs.webkit.org/show_bug.cgi?id=107308
Signed-off-by: Manuel Kaufmann <humitos@gmail.com>
Acked-by: Manuel QuiƱones <manuq@laptop.org>
Diffstat (limited to 'downloadmanager.py')
-rw-r--r-- | downloadmanager.py | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/downloadmanager.py b/downloadmanager.py index 1e4f92b..d3f5874 100644 --- a/downloadmanager.py +++ b/downloadmanager.py @@ -95,6 +95,13 @@ class Download(object): self.dl_jobject.metadata['progress'] = str(int(progress * 100)) datastore.write(self.dl_jobject) + def __current_size_changed_cb(self, download, something): + current_size = self._download.get_current_size() + total_size = self._download.get_total_size() + progress = current_size * 100 / total_size + self.dl_jobject.metadata['progress'] = str(progress) + datastore.write(self.dl_jobject) + def __state_change_cb(self, download, gparamspec): state = self._download.get_status() if state == WebKit.DownloadStatus.STARTED: @@ -128,8 +135,12 @@ class Download(object): self.__stop_response_cb) self._activity.add_alert(self._canceled_alert) else: - self._download.connect('notify::progress', - self.__progress_change_cb) + # FIXME: workaround for SL #4385 + # self._download.connect('notify::progress', + # self.__progress_change_cb) + self._download.connect('notify::current-size', + self.__current_size_changed_cb) + self._create_journal_object() self._object_id = self.dl_jobject.object_id |