aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--debian/changelog10
-rw-r--r--debian/patches/lp_750823.patch38
2 files changed, 48 insertions, 0 deletions
diff --git a/debian/changelog b/debian/changelog
index 9ba7e38..054bacf 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,13 @@
+indicator-sound (0.6.6.1-0ubuntu3) natty; urgency=low
+
+ * debian/patches/lp_750823.patch
+ - Place timeout in the mpris controller to accommodate flaky mpris dbus
+ behaviour, it can be seen sometimes that the players emit a property
+ changed on the metadata property but the actual value of the property
+ which the service then tries to use is the old value (LP: #750823)
+
+ -- Ken VanDine <ken.vandine@canonical.com> Mon, 18 Apr 2011 15:08:13 -0400
+
indicator-sound (0.6.6.1-0ubuntu2) natty; urgency=low
* debian/patches/lp_759390.patch
diff --git a/debian/patches/lp_750823.patch b/debian/patches/lp_750823.patch
new file mode 100644
index 0000000..837c183
--- /dev/null
+++ b/debian/patches/lp_750823.patch
@@ -0,0 +1,38 @@
+=== modified file 'src/mpris2-controller.vala'
+--- src/mpris2-controller.vala 2011-03-29 10:43:34 +0000
++++ src/mpris2-controller.vala 2011-04-18 19:02:26 +0000
+@@ -83,13 +83,7 @@
+ }
+ Variant? meta_v = changed_properties.lookup("Metadata");
+ if(meta_v != null){
+- GLib.HashTable<string, Variant?> changed_updates = clean_metadata();
+- PlayerItem metadata = this.owner.custom_items[PlayerController.widget_order.METADATA];
+- metadata.reset ( MetadataMenuitem.attributes_format());
+- metadata.update ( changed_updates,
+- MetadataMenuitem.attributes_format());
+- metadata.property_set_bool ( MENUITEM_PROP_VISIBLE,
+- metadata.populated(MetadataMenuitem.attributes_format()));
++ Timeout.add (300, this.ensure_correct_metadata);
+ }
+ Variant? playlist_v = changed_properties.lookup("ActivePlaylist");
+ if ( playlist_v != null && this.owner.use_playlists == true ){
+@@ -113,7 +107,17 @@
+ title.alter_label (this.mpris2_root.Identity);
+ }
+ }
+-
++
++ private bool ensure_correct_metadata(){
++ GLib.HashTable<string, Variant?> changed_updates = clean_metadata();
++ PlayerItem metadata = this.owner.custom_items[PlayerController.widget_order.METADATA];
++ metadata.reset ( MetadataMenuitem.attributes_format());
++ metadata.update ( changed_updates,
++ MetadataMenuitem.attributes_format());
++ metadata.property_set_bool ( MENUITEM_PROP_VISIBLE,
++ metadata.populated(MetadataMenuitem.attributes_format()));
++ return false;
++ }
+ private bool ensure_correct_playback_status(){
+ //debug("TEST playback status = %s", this.player.PlaybackStatus);
+ Transport.State p = (Transport.State)this.determine_play_state(this.player.PlaybackStatus);
+