diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/CMakeLists.txt | 2 | ||||
-rw-r--r-- | src/media-player-list.vala | 2 | ||||
-rw-r--r-- | src/media-player.vala | 15 |
3 files changed, 13 insertions, 6 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 572befd..c11ec51 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -32,6 +32,7 @@ vala_add(indicator-sound-service volume-control media-player media-player-list + mpris2-interfaces ) vala_add(indicator-sound-service main.vala @@ -62,6 +63,7 @@ vala_add(indicator-sound-service sound-menu.vala DEPENDS media-player + mpris2-interfaces ) vala_finish(indicator-sound-service diff --git a/src/media-player-list.vala b/src/media-player-list.vala index 62badc2..75c7bb4 100644 --- a/src/media-player-list.vala +++ b/src/media-player-list.vala @@ -118,7 +118,7 @@ public class MediaPlayerList { var player = this.insert (mpris2_root.DesktopEntry); if (player != null) - player.attach (name); + player.attach (mpris2_root, name); } catch (Error e) { warning ("unable to create mpris proxy for '%s': %s", name, e.message); diff --git a/src/media-player.vala b/src/media-player.vala index 7e0d2a7..49fe387 100644 --- a/src/media-player.vala +++ b/src/media-player.vala @@ -94,9 +94,10 @@ public class MediaPlayer: Object { * * This method does not block. If it is successful, "is-running" will be set to %TRUE. */ - public void attach (string dbus_name) { + public void attach (MprisRoot root, string dbus_name) { return_if_fail (this._dbus_name == null && this.proxy == null); + this.root = root; this._dbus_name = dbus_name; Bus.get_proxy.begin<MprisPlayer> (BusType.SESSION, dbus_name, "/org/mpris/MediaPlayer2", DBusProxyFlags.GET_INVALIDATED_PROPERTIES, null, got_proxy); @@ -125,14 +126,17 @@ public class MediaPlayer: Object { */ public void activate () { try { - this.appinfo.launch (null, null); + if (this.proxy == null) { + this.appinfo.launch (null, null); + this.state = "Launching"; + } + else if (this.root != null && this.root.CanRaise) { + this.root.Raise (); + } } catch (Error e) { warning ("unable to activate %s: %s", appinfo.get_name (), e.message); } - - if (this.proxy == null) - this.state = "Launching"; } /** @@ -188,6 +192,7 @@ public class MediaPlayer: Object { MprisPlaylists ?playlists_proxy; string _dbus_name; bool play_when_attached = false; + MprisRoot root; PlaylistDetails[] playlists = null; void got_proxy (Object? obj, AsyncResult res) { |