diff --git a/bin/mpdevil b/bin/mpdevil index aa2c65e..a6fe56d 100755 --- a/bin/mpdevil +++ b/bin/mpdevil @@ -39,6 +39,7 @@ import re import dbus import dbus.service from dbus.mainloop.glib import DBusGMainLoop +DBusGMainLoop(set_as_default=True) VERSION='0.9.0-dev' # sync with setup.py COVER_REGEX="^\.?(album|cover|folder|front).*\.(gif|jpeg|jpg|png)$" @@ -100,6 +101,8 @@ class MPRISInterface(dbus.service.Object): # TODO emit Seeked if needed self._client.emitter.connect("repeat", self._on_loop_changed) self._client.emitter.connect("single", self._on_loop_changed) self._client.emitter.connect("random", self._on_random_changed) + self._client.emitter.connect("disconnected", self._on_disconnected) + self._client.emitter.connect("reconnected", self._on_reconnected) def acquire_name(self): self._bus_name=dbus.service.BusName(self._name, bus=self._bus, allow_replacement=True, replace_existing=True) @@ -430,6 +433,13 @@ class MPRISInterface(dbus.service.Object): # TODO emit Seeked if needed def _on_random_changed(self, *args): self.update_property('org.mpris.MediaPlayer2.Player', 'Shuffle') + def _on_reconnected(self, *args): + self.acquire_name() + + def _on_disconnected(self, *args): + self.release_name() + self._metadata={} + def _name_owner_changed_callback(self, name, old_owner, new_owner): if name == self._name and old_owner == self._uname and new_owner != "": try: @@ -3406,8 +3416,7 @@ class MainWindow(Gtk.ApplicationWindow): self._icon_size=self._settings.get_int("icon-size") # MPRIS - DBusGMainLoop(set_as_default=True) - self._dbus_service=MPRISInterface(self, self._client, self._settings) + dbus_service=MPRISInterface(self, self._client, self._settings) # actions save_action=Gio.SimpleAction.new("save", None) @@ -3546,17 +3555,14 @@ class MainWindow(Gtk.ApplicationWindow): notify.show() def _on_reconnected(self, *args): - self._dbus_service.acquire_name() self._playback_control.set_sensitive(True) self._update_action.set_enabled(True) self._stats_action.set_enabled(True) def _on_disconnected(self, *args): - self._dbus_service.release_name() self.set_title("mpdevil") if self._use_csd: self._header_bar.set_subtitle("") - self.songid_playing=None self._playback_control.set_sensitive(False) self._update_action.set_enabled(False) self._stats_action.set_enabled(False)