diff options
Diffstat (limited to 'lib/mpris/mpris.vala')
-rw-r--r-- | lib/mpris/mpris.vala | 45 |
1 files changed, 33 insertions, 12 deletions
diff --git a/lib/mpris/mpris.vala b/lib/mpris/mpris.vala index 0e55a2e..8eaffa5 100644 --- a/lib/mpris/mpris.vala +++ b/lib/mpris/mpris.vala @@ -1,12 +1,24 @@ namespace AstalMpris { -public Mpris get_default() { - return Mpris.get_default(); + /** + * Gets the default singleton Mpris instance. + */ + public Mpris get_default() { + return Mpris.get_default(); + } } -public class Mpris : Object { +/** + * Object that monitors dbus for players to appear and disappear. + */ +public class AstalMpris.Mpris : Object { internal static string PREFIX = "org.mpris.MediaPlayer2."; private static Mpris instance; + private DBusImpl proxy; + + /** + * Gets the default singleton Mpris instance. + */ public static Mpris get_default() { if (instance == null) instance = new Mpris(); @@ -14,15 +26,23 @@ public class Mpris : Object { return instance; } - private DBusImpl proxy; - private HashTable<string, Player> _players = new HashTable<string, Player> (str_hash, str_equal); + /** + * List of currently available players. + */ public List<weak Player> players { owned get { return _players.get_values(); } } - public signal void player_added (Player player); - public signal void player_closed (Player player); + /** + * Emitted when a new mpris Player appears. + */ + public signal void player_added(Player player); + + /** + * Emitted when a Player disappears. + */ + public signal void player_closed(Player player); construct { try { @@ -53,14 +73,15 @@ public class Mpris : Object { var p = new Player(busname); _players.set(busname, p); - p.closed.connect(() => { - player_closed(p); - _players.remove(busname); - notify_property("players"); + p.notify["available"].connect(() => { + if (!p.available) { + player_closed(p); + _players.remove(busname); + notify_property("players"); + } }); player_added(p); notify_property("players"); } } -} |