aboutsummaryrefslogtreecommitdiff
path: root/src/mpris2-controller.vala
diff options
context:
space:
mode:
authorConor Curran <conor.curran@canonical.com>2011-01-25 14:55:25 -0600
committerConor Curran <conor.curran@canonical.com>2011-01-25 14:55:25 -0600
commitd45fd344a30bc917c45aa07458e8961ba3018f69 (patch)
tree4d923ffe24f7ebc9b16da929dcb7244971250631 /src/mpris2-controller.vala
parent329fda69862c649131c22fbac7e410c2af3603ae (diff)
downloadayatana-indicator-sound-d45fd344a30bc917c45aa07458e8961ba3018f69.tar.gz
ayatana-indicator-sound-d45fd344a30bc917c45aa07458e8961ba3018f69.tar.bz2
ayatana-indicator-sound-d45fd344a30bc917c45aa07458e8961ba3018f69.zip
spotify crasher fixed
Diffstat (limited to 'src/mpris2-controller.vala')
-rw-r--r--src/mpris2-controller.vala62
1 files changed, 39 insertions, 23 deletions
diff --git a/src/mpris2-controller.vala b/src/mpris2-controller.vala
index fc61c12..1c9258c 100644
--- a/src/mpris2-controller.vala
+++ b/src/mpris2-controller.vala
@@ -93,6 +93,16 @@ public class Mpris2Controller : GLib.Object
if ( playlist_v != null && this.owner.use_playlists == true ){
this.fetch_active_playlist();
}
+ Variant? playlist_count_v = changed_properties.lookup("PlaylistCount");
+ if ( playlist_count_v != null && this.owner.use_playlists == true ){
+ this.fetch_playlists();
+ this.fetch_active_playlist();
+ }
+ Variant? playlist_orderings_v = changed_properties.lookup("Orderings");
+ if ( playlist_orderings_v != null && this.owner.use_playlists == true ){
+ this.fetch_playlists();
+ this.fetch_active_playlist();
+ }
}
private bool ensure_correct_playback_status(){
@@ -107,16 +117,21 @@ public class Mpris2Controller : GLib.Object
GLib.HashTable<string, Variant?> changed_updates = this.player.Metadata;
Variant? artist_v = this.player.Metadata.lookup("xesam:artist");
if(artist_v != null){
- string[] artists = (string[])this.player.Metadata.lookup("xesam:artist");
- string display_artists = string.joinv(", ", artists);
+ Variant? v_artists = this.player.Metadata.lookup("xesam:artist");
+ debug("artists is of type %s", v_artists.get_type_string ());
+ string display_artists;
+ if(v_artists.get_type_string() == "s"){
+ debug("SPOTIFY YOU BASTARD");
+ display_artists = v_artists.get_string();
+ }
+ else{
+ debug ("conforms with the spec" );
+ string[] artists = v_artists.dup_strv();
+ display_artists = string.joinv(", ", artists);
+ }
changed_updates.replace("xesam:artist", display_artists);
debug("artist : %s", (string)changed_updates.lookup("xesam:artist"));
}
- Variant? length_v = this.player.Metadata.lookup("mpris:length");
- if(length_v != null){
- int64 duration = this.player.Metadata.lookup("mpris:length").get_int64();
- changed_updates.replace("mpris:length", duration/1000000);
- }
return changed_updates;
}
@@ -161,7 +176,20 @@ public class Mpris2Controller : GLib.Object
}
}
- public void fetch_playlists()
+
+ public bool connected()
+ {
+ return (this.player != null && this.mpris2_root != null);
+ }
+
+ public void expose()
+ {
+ if(this.connected() == true){
+ this.mpris2_root.Raise.begin();
+ }
+ }
+
+ public bool fetch_playlists()
{
PlaylistDetails[] current_playlists = this.playlists.GetPlaylists(0,
10,
@@ -176,29 +204,17 @@ public class Mpris2Controller : GLib.Object
warning(" Playlists are on but its returning no current_playlists" );
this.owner.use_playlists = false;
}
- return;
+ return false;
}
- private void fetch_active_playlist()
+ private bool fetch_active_playlist()
{
if (this.playlists.ActivePlaylist.valid == false){
debug("We don't have an active playlist");
}
PlaylistsMenuitem playlists_item = this.owner.custom_items[PlayerController.widget_order.PLAYLISTS] as PlaylistsMenuitem;
playlists_item.update_active_playlist ( this.playlists.ActivePlaylist.details );
- }
-
-
- public bool connected()
- {
- return (this.player != null && this.mpris2_root != null);
- }
-
- public void expose()
- {
- if(this.connected() == true){
- this.mpris2_root.Raise.begin();
- }
+ return false;
}
public void activate_playlist (ObjectPath path)