[gnome-music/wip/jfelder/smartplaylist-update-sorted: 1/3] coremodel: Splice playlist model on changes
- From: Jean Felder <jfelder src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-music/wip/jfelder/smartplaylist-update-sorted: 1/3] coremodel: Splice playlist model on changes
- Date: Sun, 1 Mar 2020 20:03:26 +0000 (UTC)
commit 5b6f4a04e48f63cc269a9d52caac9efe618d4df8
Author: Marinus Schraal <mschraal gnome org>
Date: Sat Feb 22 16:23:24 2020 +0100
coremodel: Splice playlist model on changes
When reacting to the items-changed signal on the current playlist model,
all items were removed & added one at a time. This would result in
changes possibly stopping the playing playlist, as the playlist could
effectively could become empty.
Instead make the signal handler smarter and splice the changes in
one go.
gnomemusic/coremodel.py | 11 +++++------
1 file changed, 5 insertions(+), 6 deletions(-)
---
diff --git a/gnomemusic/coremodel.py b/gnomemusic/coremodel.py
index 4e76c346..20b7ecb9 100644
--- a/gnomemusic/coremodel.py
+++ b/gnomemusic/coremodel.py
@@ -242,10 +242,7 @@ class CoreModel(GObject.GObject):
return
def _on_items_changed(model, position, removed, added):
- if removed > 0:
- for i in list(range(removed)):
- self._playlist_model.remove(position)
-
+ songs_list = []
if added > 0:
for i in list(range(added)):
coresong = model[position + i]
@@ -253,8 +250,6 @@ class CoreModel(GObject.GObject):
coresong.props.media, self._coreselection,
self.props.grilo)
- self._playlist_model.insert(position + i, song)
-
song.bind_property(
"state", coresong, "state",
GObject.BindingFlags.SYNC_CREATE)
@@ -263,6 +258,10 @@ class CoreModel(GObject.GObject):
GObject.BindingFlags.BIDIRECTIONAL
| GObject.BindingFlags.SYNC_CREATE)
+ songs_list.append(song)
+
+ self._playlist_model.splice(position, removed, songs_list)
+
played_states = [SongWidget.State.PLAYING, SongWidget.State.PLAYED]
for song in self._playlist_model:
if song.props.state in played_states:
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]