diff --git a/gnomemusic/coremodel.py b/gnomemusic/coremodel.py index 80d8f25d4ba517d01c389fb85a9a514b927e4c8e..0df1616342eddbc7be4170b01f59c92a6ff868a4 100644 --- a/gnomemusic/coremodel.py +++ b/gnomemusic/coremodel.py @@ -79,6 +79,7 @@ class CoreModel(GObject.GObject): super().__init__() self._flatten_model = None + self._playlist_signal_id = None self._previous_playlist_model = None self._search_signal_id = None self._song_signal_id = None @@ -326,6 +327,10 @@ class CoreModel(GObject.GObject): self.emit("playlist-loaded") elif playlist_type == PlayerPlaylist.Type.PLAYLIST: + if self._playlist_signal_id: + self._previous_playlist_model.disconnect( + self._playlist_signal_id) + for model_song in model: song = CoreSong( model_song.props.media, self._coreselection, @@ -341,6 +346,9 @@ class CoreModel(GObject.GObject): GObject.BindingFlags.BIDIRECTIONAL | GObject.BindingFlags.SYNC_CREATE) + self._playlist_signal_id = model.connect( + "items-changed", _on_items_changed) + self.emit("playlist-loaded") self._previous_playlist_model = model