[gnome-music/wip/mschraal/duration-fixes: 1/4] corealbum: Rework duration calculation
- From: Marinus Schraal <mschraal src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-music/wip/mschraal/duration-fixes: 1/4] corealbum: Rework duration calculation
- Date: Mon, 22 Jul 2019 13:58:37 +0000 (UTC)
commit 7d63a6d02af407db47b5e611d86fb837fdda243c
Author: Marinus Schraal <mschraal gnome org>
Date: Sat Jul 20 02:25:30 2019 +0200
corealbum: Rework duration calculation
On every list item change in CoreAlbum a new notify signal was added, this
mistake caused a signal storm after a few changes.
Fixing this bug allowed for more natural duration calculation in CoreAlbum and
CoreDisc.
gnomemusic/corealbum.py | 9 +++++++--
gnomemusic/coredisc.py | 11 +++--------
2 files changed, 10 insertions(+), 10 deletions(-)
---
diff --git a/gnomemusic/corealbum.py b/gnomemusic/corealbum.py
index 0301e624..97735c94 100644
--- a/gnomemusic/corealbum.py
+++ b/gnomemusic/corealbum.py
@@ -69,12 +69,17 @@ class CoreAlbum(GObject.GObject):
return self._model
- def _on_list_items_changed(self, model, pos, removed, added):
+ def _on_list_items_changed(self, model, position, removed, added):
with self.freeze_notify():
for coredisc in model:
- coredisc.connect("notify::duration", self._on_duration_changed)
coredisc.props.selected = self.props.selected
+ if added > 0:
+ for i in list(range(added)):
+ coredisc = model[position + i]
+ coredisc.connect(
+ "notify::duration", self._on_duration_changed)
+
def _on_duration_changed(self, coredisc, duration):
duration = 0
diff --git a/gnomemusic/coredisc.py b/gnomemusic/coredisc.py
index c3139174..f4089830 100644
--- a/gnomemusic/coredisc.py
+++ b/gnomemusic/coredisc.py
@@ -77,16 +77,12 @@ class CoreDisc(GObject.GObject):
def _on_disc_changed(self, model, position, removed, added):
with self.freeze_notify():
+ duration = 0
for coresong in model:
coresong.props.selected = self._selected
+ duration += coresong.props.duration
- def _update_duration(self):
- duration = 0
-
- for coresong in self.props.model:
- duration += coresong.props.duration
-
- self.props.duration = duration
+ self.props.duration = duration
def _disc_sort(self, song_a, song_b):
return song_a.props.track_number - song_b.props.track_number
@@ -116,7 +112,6 @@ class CoreDisc(GObject.GObject):
return
model_filter.set_filter_func(_filter_func)
self._old_album_ids = album_ids
- self._update_duration()
return
album_ids.append(media.get_source() + media.get_id())
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]