aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorConor Curran <conor.curran@canonical.com>2012-03-19 18:35:30 +0000
committerConor Curran <conor.curran@canonical.com>2012-03-19 18:35:30 +0000
commit90c440a05e9d0f45583719c921e2fbd2d4eefaa7 (patch)
tree6dbdc57d1fda0336d3717a79c697ecdf1a3074af
parent2e894a27c5563346d54bbce25754d6e850747d63 (diff)
downloadayatana-indicator-sound-90c440a05e9d0f45583719c921e2fbd2d4eefaa7.tar.gz
ayatana-indicator-sound-90c440a05e9d0f45583719c921e2fbd2d4eefaa7.tar.bz2
ayatana-indicator-sound-90c440a05e9d0f45583719c921e2fbd2d4eefaa7.zip
more defensive approach to dealing with the playlistdetails struct specifically the activeplaylist prop, tweaked player label padding by 1 pixel
-rw-r--r--src/metadata-widget.c2
-rw-r--r--src/mpris2-controller.vala22
-rw-r--r--src/mpris2-interfaces.vala2
3 files changed, 21 insertions, 5 deletions
diff --git a/src/metadata-widget.c b/src/metadata-widget.c
index ceae79a..7c7e750 100644
--- a/src/metadata-widget.c
+++ b/src/metadata-widget.c
@@ -228,7 +228,7 @@ metadata_widget_init (MetadataWidget *self)
GtkWidget* player_label;
player_label = gtk_label_new ("");
gtk_misc_set_alignment(GTK_MISC(player_label), (gfloat)0, (gfloat)0);
- gtk_misc_set_padding (GTK_MISC(player_label), (gfloat)1, (gfloat)4);
+ gtk_misc_set_padding (GTK_MISC(player_label), (gfloat)1, (gfloat)3);
gtk_widget_set_size_request (player_label, 150, 24);
priv->player_label = player_label;
diff --git a/src/mpris2-controller.vala b/src/mpris2-controller.vala
index 0fa7b6c..9cd02c4 100644
--- a/src/mpris2-controller.vala
+++ b/src/mpris2-controller.vala
@@ -92,7 +92,7 @@ public class Mpris2Controller : GLib.Object
}
Variant? playlist_v = changed_properties.lookup("ActivePlaylist");
if ( playlist_v != null && this.owner.use_playlists == true ){
- Timeout.add (300, this.fetch_active_playlist);
+ Timeout.add (500, this.fetch_active_playlist);
}
Variant? playlist_count_v = changed_properties.lookup("PlaylistCount");
if ( playlist_count_v != null && this.owner.use_playlists == true ){
@@ -240,14 +240,30 @@ public class Mpris2Controller : GLib.Object
playlists_item.update(current_playlists);
}
else{
- warning(" Playlists are on but its returning no current_playlists" );
+ warning(" Playlists are on but %s is returning no current_playlists ?",
+ this.owner.app_info.get_name());
this.owner.use_playlists = false;
}
}
+ private bool validate_playlists_details()
+ {
+ if (this.playlists.ActivePlaylist.valid == false){
+ return false;
+ }
+ if (this.playlists.ActivePlaylist.details == null){
+ return false;
+ }
+ if (this.playlists.ActivePlaylist.details.path == null ||
+ this.playlists.ActivePlaylist.details.name == null){
+ return false;
+ }
+ return true;
+ }
+
private bool fetch_active_playlist()
{
- if (this.playlists.ActivePlaylist.valid == false){
+ if (this.validate_playlists_details() == false){
return false;
}
PlaylistsMenuitem playlists_item = this.owner.custom_items[PlayerController.widget_order.PLAYLISTS] as PlaylistsMenuitem;
diff --git a/src/mpris2-interfaces.vala b/src/mpris2-interfaces.vala
index db6888d..cb68e84 100644
--- a/src/mpris2-interfaces.vala
+++ b/src/mpris2-interfaces.vala
@@ -65,7 +65,7 @@ public interface MprisPlaylists : Object {
//properties
public abstract string[] Orderings{owned get; set;}
public abstract uint32 PlaylistCount{owned get; set;}
- public abstract ActivePlaylistContainer ActivePlaylist {owned get; set;}
+ public abstract ActivePlaylistContainer? ActivePlaylist {owned get; set;}
//methods
public abstract async void ActivatePlaylist(ObjectPath playlist_id) throws IOError;