diff --git a/gajim/gui_interface.py b/gajim/gui_interface.py index e7f9fd43f..57774c958 100644 --- a/gajim/gui_interface.py +++ b/gajim/gui_interface.py @@ -2099,11 +2099,13 @@ class Interface: if not self.music_track_changed_signal: self.music_track_changed_signal = listener.connect( 'music-track-changed', self.music_track_changed) + listener.start() def disable_music_listener(self): listener = MusicTrackListener.get() listener.disconnect(self.music_track_changed_signal) self.music_track_changed_signal = None + listener.stop() @staticmethod def music_track_changed(unused_listener, music_track_info, account=None): diff --git a/gajim/music_track_listener.py b/gajim/music_track_listener.py index 86fbf986f..51ce88b21 100644 --- a/gajim/music_track_listener.py +++ b/gajim/music_track_listener.py @@ -55,6 +55,7 @@ class MusicTrackListener(GObject.GObject): super().__init__() self.players = {} + def start(self): proxy = Gio.DBusProxy.new_for_bus_sync( Gio.BusType.SESSION, Gio.DBusProxyFlags.NONE, @@ -92,6 +93,11 @@ class MusicTrackListener(GObject.GObject): if name.startswith(MPRIS_PLAYER_PREFIX): self._add_player(name) + def stop(self): + for name in list(self.players): + if name.startswith(MPRIS_PLAYER_PREFIX): + self._remove_player(name) + def _signal_name_owner_changed(self, connection, sender_name, object_path, interface_name, signal_name, parameters, *user_data): name, oldOwner, newOwner = parameters @@ -204,4 +210,5 @@ if __name__ == '__main__': print(music_track_info.title) listener = MusicTrackListener.get() listener.connect('music-track-changed', music_track_change_cb) + listener.start() GLib.MainLoop().run()