aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--debian/changelog7
-rw-r--r--debian/patches/lp_945827.patch449
-rw-r--r--debian/patches/series2
3 files changed, 457 insertions, 1 deletions
diff --git a/debian/changelog b/debian/changelog
index b2f4d76..5989f02 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+indicator-sound (0.8.4.1-0ubuntu2) precise; urgency=low
+
+ * debian/patches/lp_945827.patch
+ - fix for a playlist crasher (LP: #945827)
+
+ -- Ken VanDine <ken.vandine@canonical.com> Tue, 20 Mar 2012 16:40:24 -0400
+
indicator-sound (0.8.4.1-0ubuntu1) precise; urgency=low
* New upstream release.
diff --git a/debian/patches/lp_945827.patch b/debian/patches/lp_945827.patch
new file mode 100644
index 0000000..c92ab33
--- /dev/null
+++ b/debian/patches/lp_945827.patch
@@ -0,0 +1,449 @@
+=== modified file 'src/metadata-widget.c'
+--- old/src/metadata-widget.c 2012-03-19 14:58:53 +0000
++++ new/src/metadata-widget.c 2012-03-20 20:19:44 +0000
+@@ -228,7 +228,7 @@
+ 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;
+
+
+=== modified file 'src/mpris2-controller.c'
+--- old/src/mpris2-controller.c 2012-03-16 17:50:43 +0000
++++ new/src/mpris2-controller.c 2012-03-20 20:25:46 +0000
+@@ -151,6 +151,7 @@
+ typedef struct _PlaylistsMenuitemClass PlaylistsMenuitemClass;
+ #define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL)))
+ typedef struct _Mpris2ControllerFetchPlaylistsData Mpris2ControllerFetchPlaylistsData;
++#define _active_playlist_container_free0(var) ((var == NULL) ? NULL : (var = (active_playlist_container_free (var), NULL)))
+
+ struct _Mpris2Controller {
+ GObject parent_instance;
+@@ -218,7 +219,7 @@
+ void (*set_Orderings) (MprisPlaylists* self, gchar** value, int value_length1);
+ guint32 (*get_PlaylistCount) (MprisPlaylists* self);
+ void (*set_PlaylistCount) (MprisPlaylists* self, guint32 value);
+- void (*get_ActivePlaylist) (MprisPlaylists* self, ActivePlaylistContainer* value);
++ ActivePlaylistContainer* (*get_ActivePlaylist) (MprisPlaylists* self);
+ void (*set_ActivePlaylist) (MprisPlaylists* self, ActivePlaylistContainer* value);
+ };
+
+@@ -281,8 +282,12 @@
+ PlaylistDetails* _tmp9_;
+ gint _tmp9__length1;
+ PlayerController* _tmp10_;
+- gboolean _tmp11_;
+- gboolean* _tmp12_;
++ GAppInfo* _tmp11_;
++ GAppInfo* _tmp12_;
++ const gchar* _tmp13_;
++ PlayerController* _tmp14_;
++ gboolean _tmp15_;
++ gboolean* _tmp16_;
+ GError * _inner_error_;
+ };
+
+@@ -382,8 +387,10 @@
+ static void mpris2_controller_fetch_playlists_ready (GObject* source_object, GAsyncResult* _res_, gpointer _user_data_);
+ static void _vala_PlaylistDetails_array_free (PlaylistDetails* array, gint array_length);
+ void playlists_menuitem_update (PlaylistsMenuitem* self, PlaylistDetails* playlists, int playlists_length1);
++GAppInfo* player_controller_get_app_info (PlayerController* self);
+ static gboolean* _bool_dup (gboolean* self);
+-void mpris_playlists_get_ActivePlaylist (MprisPlaylists* self, ActivePlaylistContainer* result);
++static gboolean mpris2_controller_validate_playlists_details (Mpris2Controller* self);
++ActivePlaylistContainer* mpris_playlists_get_ActivePlaylist (MprisPlaylists* self);
+ void playlists_menuitem_active_playlist_update (PlaylistsMenuitem* self, PlaylistDetails* detail);
+ void mpris2_controller_activate_playlist (Mpris2Controller* self, const char* path);
+ void mpris_playlists_ActivatePlaylist (MprisPlaylists* self, const char* playlist_id, GAsyncReadyCallback _callback_, gpointer _user_data_);
+@@ -580,7 +587,7 @@
+ }
+ _tmp31_ = _tmp26_;
+ if (_tmp31_) {
+- g_timeout_add_full (G_PRIORITY_DEFAULT, (guint) 300, _mpris2_controller_fetch_active_playlist_gsource_func, g_object_ref (self), g_object_unref);
++ g_timeout_add_full (G_PRIORITY_DEFAULT, (guint) 500, _mpris2_controller_fetch_active_playlist_gsource_func, g_object_ref (self), g_object_unref);
+ }
+ _tmp32_ = changed_properties;
+ _tmp33_ = g_hash_table_lookup (_tmp32_, "PlaylistCount");
+@@ -1206,13 +1213,18 @@
+ playlists_menuitem_update (_data_->_tmp8_, _data_->_tmp9_, _data_->_tmp9__length1);
+ _g_object_unref0 (_data_->playlists_item);
+ } else {
+- g_warning ("mpris2-controller.vala:243: Playlists are on but its returning no cur" \
+-"rent_playlists");
+ _data_->_tmp10_ = _data_->self->priv->_owner;
+- _data_->_tmp11_ = FALSE;
+- _data_->_tmp12_ = __bool_dup0 (&_data_->_tmp11_);
+- _g_free0 (_data_->_tmp10_->use_playlists);
+- _data_->_tmp10_->use_playlists = _data_->_tmp12_;
++ _data_->_tmp11_ = player_controller_get_app_info (_data_->_tmp10_);
++ _data_->_tmp12_ = _data_->_tmp11_;
++ _data_->_tmp13_ = NULL;
++ _data_->_tmp13_ = g_app_info_get_name (_data_->_tmp12_);
++ g_warning ("mpris2-controller.vala:243: Playlists are on but %s is returning no c" \
++"urrent_playlists ?", _data_->_tmp13_);
++ _data_->_tmp14_ = _data_->self->priv->_owner;
++ _data_->_tmp15_ = FALSE;
++ _data_->_tmp16_ = __bool_dup0 (&_data_->_tmp15_);
++ _g_free0 (_data_->_tmp14_->use_playlists);
++ _data_->_tmp14_->use_playlists = _data_->_tmp16_;
+ }
+ _data_->current_playlists = (_vala_PlaylistDetails_array_free (_data_->current_playlists, _data_->current_playlists_length1), NULL);
+ if (_data_->_state_ == 0) {
+@@ -1225,50 +1237,121 @@
+ }
+
+
+-static gboolean mpris2_controller_fetch_active_playlist (Mpris2Controller* self) {
++static gboolean mpris2_controller_validate_playlists_details (Mpris2Controller* self) {
+ gboolean result = FALSE;
+ MprisPlaylists* _tmp0_;
+- ActivePlaylistContainer _tmp1_;
+- ActivePlaylistContainer _tmp2_;
+- ActivePlaylistContainer _tmp3_;
++ ActivePlaylistContainer* _tmp1_;
++ ActivePlaylistContainer* _tmp2_;
++ ActivePlaylistContainer* _tmp3_;
+ gboolean _tmp4_;
+ gboolean _tmp5_;
+- PlayerController* _tmp6_;
+- GeeArrayList* _tmp7_;
+- gpointer _tmp8_ = NULL;
+- PlaylistsMenuitem* playlists_item;
+- PlaylistsMenuitem* _tmp9_;
+- MprisPlaylists* _tmp10_;
+- ActivePlaylistContainer _tmp11_;
+- ActivePlaylistContainer _tmp12_;
+- ActivePlaylistContainer _tmp13_;
+- PlaylistDetails* _tmp14_;
+- PlaylistDetails _tmp15_;
++ MprisPlaylists* _tmp6_;
++ ActivePlaylistContainer* _tmp7_;
++ ActivePlaylistContainer* _tmp8_;
++ ActivePlaylistContainer* _tmp9_;
++ PlaylistDetails* _tmp10_;
++ gboolean _tmp11_;
++ gboolean _tmp12_ = FALSE;
++ MprisPlaylists* _tmp13_;
++ ActivePlaylistContainer* _tmp14_;
++ ActivePlaylistContainer* _tmp15_;
++ ActivePlaylistContainer* _tmp16_;
++ PlaylistDetails* _tmp17_;
++ const char* _tmp18_;
++ gboolean _tmp19_;
++ gboolean _tmp26_;
+ g_return_val_if_fail (self != NULL, FALSE);
+ _tmp0_ = self->priv->_playlists;
+- mpris_playlists_get_ActivePlaylist (_tmp0_, &_tmp1_);
++ _tmp1_ = mpris_playlists_get_ActivePlaylist (_tmp0_);
+ _tmp2_ = _tmp1_;
+ _tmp3_ = _tmp2_;
+- _tmp4_ = _tmp3_.valid;
++ _tmp4_ = (*_tmp3_).valid;
+ _tmp5_ = _tmp4_ == FALSE;
+- active_playlist_container_destroy (&_tmp3_);
++ _active_playlist_container_free0 (_tmp3_);
+ if (_tmp5_) {
+ result = FALSE;
+ return result;
+ }
+- _tmp6_ = self->priv->_owner;
+- _tmp7_ = _tmp6_->custom_items;
+- _tmp8_ = gee_abstract_list_get ((GeeAbstractList*) _tmp7_, (gint) PLAYER_CONTROLLER_WIDGET_ORDER_PLAYLISTS);
+- playlists_item = IS_PLAYLISTS_MENUITEM ((PlayerItem*) _tmp8_) ? ((PlaylistsMenuitem*) ((PlayerItem*) _tmp8_)) : NULL;
+- _tmp9_ = playlists_item;
+- _tmp10_ = self->priv->_playlists;
+- mpris_playlists_get_ActivePlaylist (_tmp10_, &_tmp11_);
+- _tmp12_ = _tmp11_;
+- _tmp13_ = _tmp12_;
+- _tmp14_ = _tmp13_.details;
+- _tmp15_ = *_tmp14_;
+- playlists_menuitem_active_playlist_update (_tmp9_, &_tmp15_);
+- active_playlist_container_destroy (&_tmp13_);
++ _tmp6_ = self->priv->_playlists;
++ _tmp7_ = mpris_playlists_get_ActivePlaylist (_tmp6_);
++ _tmp8_ = _tmp7_;
++ _tmp9_ = _tmp8_;
++ _tmp10_ = (*_tmp9_).details;
++ _tmp11_ = _tmp10_ == NULL;
++ _active_playlist_container_free0 (_tmp9_);
++ if (_tmp11_) {
++ result = FALSE;
++ return result;
++ }
++ _tmp13_ = self->priv->_playlists;
++ _tmp14_ = mpris_playlists_get_ActivePlaylist (_tmp13_);
++ _tmp15_ = _tmp14_;
++ _tmp16_ = _tmp15_;
++ _tmp17_ = (*_tmp16_).details;
++ _tmp18_ = (*_tmp17_).path;
++ _tmp19_ = _tmp18_ == NULL;
++ _active_playlist_container_free0 (_tmp16_);
++ if (_tmp19_) {
++ _tmp12_ = TRUE;
++ } else {
++ MprisPlaylists* _tmp20_;
++ ActivePlaylistContainer* _tmp21_;
++ ActivePlaylistContainer* _tmp22_;
++ ActivePlaylistContainer* _tmp23_;
++ PlaylistDetails* _tmp24_;
++ const gchar* _tmp25_;
++ _tmp20_ = self->priv->_playlists;
++ _tmp21_ = mpris_playlists_get_ActivePlaylist (_tmp20_);
++ _tmp22_ = _tmp21_;
++ _tmp23_ = _tmp22_;
++ _tmp24_ = (*_tmp23_).details;
++ _tmp25_ = (*_tmp24_).name;
++ _tmp12_ = _tmp25_ == NULL;
++ _active_playlist_container_free0 (_tmp23_);
++ }
++ _tmp26_ = _tmp12_;
++ if (_tmp26_) {
++ result = FALSE;
++ return result;
++ }
++ result = TRUE;
++ return result;
++}
++
++
++static gboolean mpris2_controller_fetch_active_playlist (Mpris2Controller* self) {
++ gboolean result = FALSE;
++ gboolean _tmp0_ = FALSE;
++ PlayerController* _tmp1_;
++ GeeArrayList* _tmp2_;
++ gpointer _tmp3_ = NULL;
++ PlaylistsMenuitem* playlists_item;
++ PlaylistsMenuitem* _tmp4_;
++ MprisPlaylists* _tmp5_;
++ ActivePlaylistContainer* _tmp6_;
++ ActivePlaylistContainer* _tmp7_;
++ ActivePlaylistContainer* _tmp8_;
++ PlaylistDetails* _tmp9_;
++ PlaylistDetails _tmp10_;
++ g_return_val_if_fail (self != NULL, FALSE);
++ _tmp0_ = mpris2_controller_validate_playlists_details (self);
++ if (_tmp0_ == FALSE) {
++ result = FALSE;
++ return result;
++ }
++ _tmp1_ = self->priv->_owner;
++ _tmp2_ = _tmp1_->custom_items;
++ _tmp3_ = gee_abstract_list_get ((GeeAbstractList*) _tmp2_, (gint) PLAYER_CONTROLLER_WIDGET_ORDER_PLAYLISTS);
++ playlists_item = IS_PLAYLISTS_MENUITEM ((PlayerItem*) _tmp3_) ? ((PlaylistsMenuitem*) ((PlayerItem*) _tmp3_)) : NULL;
++ _tmp4_ = playlists_item;
++ _tmp5_ = self->priv->_playlists;
++ _tmp6_ = mpris_playlists_get_ActivePlaylist (_tmp5_);
++ _tmp7_ = _tmp6_;
++ _tmp8_ = _tmp7_;
++ _tmp9_ = (*_tmp8_).details;
++ _tmp10_ = *_tmp9_;
++ playlists_menuitem_active_playlist_update (_tmp4_, &_tmp10_);
++ _active_playlist_container_free0 (_tmp8_);
+ result = FALSE;
+ _g_object_unref0 (playlists_item);
+ return result;
+@@ -1298,7 +1381,7 @@
+ _tmp2_ = path;
+ _tmp3_ = e;
+ _tmp4_ = _tmp3_->message;
+- g_warning ("mpris2-controller.vala:264: Could not activate playlist %s because %s", (const gchar*) _tmp2_, _tmp4_);
++ g_warning ("mpris2-controller.vala:280: Could not activate playlist %s because %s", (const gchar*) _tmp2_, _tmp4_);
+ _g_error_free0 (e);
+ }
+ __finally13:
+
+=== modified file 'src/mpris2-controller.vala'
+--- old/src/mpris2-controller.vala 2012-03-02 16:26:40 +0000
++++ new/src/mpris2-controller.vala 2012-03-20 20:19:44 +0000
+@@ -92,7 +92,7 @@
+ }
+ 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 @@
+ 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;
+
+=== modified file 'src/mpris2-interfaces.c'
+--- old/src/mpris2-interfaces.c 2012-03-16 17:59:34 +0000
++++ new/src/mpris2-interfaces.c 2012-03-20 20:25:53 +0000
+@@ -70,6 +70,7 @@
+ #define TYPE_MPRIS_PLAYLISTS_PROXY (mpris_playlists_proxy_get_type ())
+ typedef GDBusProxy MprisPlaylistsProxy;
+ typedef GDBusProxyClass MprisPlaylistsProxyClass;
++#define _active_playlist_container_free0(var) ((var == NULL) ? NULL : (var = (active_playlist_container_free (var), NULL)))
+
+ struct _MprisRootIface {
+ GTypeInterface parent_iface;
+@@ -128,7 +129,7 @@
+ void (*set_Orderings) (MprisPlaylists* self, gchar** value, int value_length1);
+ guint32 (*get_PlaylistCount) (MprisPlaylists* self);
+ void (*set_PlaylistCount) (MprisPlaylists* self, guint32 value);
+- void (*get_ActivePlaylist) (MprisPlaylists* self, ActivePlaylistContainer* value);
++ ActivePlaylistContainer* (*get_ActivePlaylist) (MprisPlaylists* self);
+ void (*set_ActivePlaylist) (MprisPlaylists* self, ActivePlaylistContainer* value);
+ };
+
+@@ -263,7 +264,7 @@
+ void mpris_playlists_set_Orderings (MprisPlaylists* self, gchar** value, int value_length1);
+ guint32 mpris_playlists_get_PlaylistCount (MprisPlaylists* self);
+ void mpris_playlists_set_PlaylistCount (MprisPlaylists* self, guint32 value);
+-void mpris_playlists_get_ActivePlaylist (MprisPlaylists* self, ActivePlaylistContainer* result);
++ActivePlaylistContainer* mpris_playlists_get_ActivePlaylist (MprisPlaylists* self);
+ void mpris_playlists_set_ActivePlaylist (MprisPlaylists* self, ActivePlaylistContainer* value);
+ static void g_cclosure_user_marshal_VOID__BOXED (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data);
+ static void mpris_playlists_proxy_g_signal (GDBusProxy* proxy, const gchar* sender_name, const gchar* signal_name, GVariant* parameters);
+@@ -276,7 +277,7 @@
+ static void mpris_playlists_dbus_proxy_set_Orderings (MprisPlaylists* self, gchar** value, int value_length1);
+ static guint32 mpris_playlists_dbus_proxy_get_PlaylistCount (MprisPlaylists* self);
+ static void mpris_playlists_dbus_proxy_set_PlaylistCount (MprisPlaylists* self, guint32 value);
+-static void mpris_playlists_dbus_proxy_get_ActivePlaylist (MprisPlaylists* self, ActivePlaylistContainer* result);
++static ActivePlaylistContainer* mpris_playlists_dbus_proxy_get_ActivePlaylist (MprisPlaylists* self);
+ static void mpris_playlists_dbus_proxy_set_ActivePlaylist (MprisPlaylists* self, ActivePlaylistContainer* value);
+ static void mpris_playlists_proxy_mpris_playlists_interface_init (MprisPlaylistsIface* iface);
+ static void _dbus_mpris_playlists_ActivatePlaylist (MprisPlaylists* self, GVariant* parameters, GDBusMethodInvocation* invocation);
+@@ -1879,9 +1880,9 @@
+ }
+
+
+-void mpris_playlists_get_ActivePlaylist (MprisPlaylists* self, ActivePlaylistContainer* result) {
+- g_return_if_fail (self != NULL);
+- MPRIS_PLAYLISTS_GET_INTERFACE (self)->get_ActivePlaylist (self, result);
++ActivePlaylistContainer* mpris_playlists_get_ActivePlaylist (MprisPlaylists* self) {
++ g_return_val_if_fail (self != NULL, NULL);
++ return MPRIS_PLAYLISTS_GET_INTERFACE (self)->get_ActivePlaylist (self);
+ }
+
+
+@@ -2211,8 +2212,9 @@
+ }
+
+
+-static void mpris_playlists_dbus_proxy_get_ActivePlaylist (MprisPlaylists* self, ActivePlaylistContainer* result) {
++static ActivePlaylistContainer* mpris_playlists_dbus_proxy_get_ActivePlaylist (MprisPlaylists* self) {
+ GVariant *_inner_reply;
++ ActivePlaylistContainer* _result;
+ ActivePlaylistContainer _tmp39_;
+ GVariantIter _tmp40_;
+ GVariant* _tmp41_;
+@@ -2233,7 +2235,7 @@
+ _arguments = g_variant_builder_end (&_arguments_builder);
+ _reply = g_dbus_proxy_call_sync ((GDBusProxy *) self, "org.freedesktop.DBus.Properties.Get", _arguments, G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL);
+ if (!_reply) {
+- return;
++ return NULL;
+ }
+ g_variant_get (_reply, "(v)", &_inner_reply);
+ g_variant_unref (_reply);
+@@ -2255,9 +2257,9 @@
+ g_variant_unref (_tmp47_);
+ _tmp39_.details = g_memdup (&_tmp43_, sizeof (PlaylistDetails));
+ g_variant_unref (_tmp42_);
+- *result = _tmp39_;
++ _result = g_memdup (&_tmp39_, sizeof (ActivePlaylistContainer));
+ g_variant_unref (_inner_reply);
+- return;
++ return _result;
+ }
+
+
+@@ -2462,20 +2464,20 @@
+
+
+ static GVariant* _dbus_mpris_playlists_get_ActivePlaylist (MprisPlaylists* self) {
+- ActivePlaylistContainer result = {0};
++ ActivePlaylistContainer* result;
+ GVariantBuilder _tmp62_;
+ GVariantBuilder _tmp63_;
+ GVariant* _reply;
+- mpris_playlists_get_ActivePlaylist (self, &result);
++ result = mpris_playlists_get_ActivePlaylist (self);
+ g_variant_builder_init (&_tmp62_, G_VARIANT_TYPE_TUPLE);
+- g_variant_builder_add_value (&_tmp62_, g_variant_new_boolean (result.valid));
++ g_variant_builder_add_value (&_tmp62_, g_variant_new_boolean ((*result).valid));
+ g_variant_builder_init (&_tmp63_, G_VARIANT_TYPE_TUPLE);
+- g_variant_builder_add_value (&_tmp63_, g_variant_new_object_path ((*result.details).path));
+- g_variant_builder_add_value (&_tmp63_, g_variant_new_string ((*result.details).name));
+- g_variant_builder_add_value (&_tmp63_, g_variant_new_string ((*result.details).icon_path));
++ g_variant_builder_add_value (&_tmp63_, g_variant_new_object_path ((*(*result).details).path));
++ g_variant_builder_add_value (&_tmp63_, g_variant_new_string ((*(*result).details).name));
++ g_variant_builder_add_value (&_tmp63_, g_variant_new_string ((*(*result).details).icon_path));
+ g_variant_builder_add_value (&_tmp62_, g_variant_builder_end (&_tmp63_));
+ _reply = g_variant_builder_end (&_tmp62_);
+- active_playlist_container_destroy (&result);
++ _active_playlist_container_free0 (result);
+ return _reply;
+ }
+
+@@ -2534,7 +2536,7 @@
+
+
+ static void _dbus_mpris_playlists_set_ActivePlaylist (MprisPlaylists* self, GVariant* _value) {
+- ActivePlaylistContainer value = {0};
++ ActivePlaylistContainer* value = NULL;
+ ActivePlaylistContainer _tmp67_;
+ GVariantIter _tmp68_;
+ GVariant* _tmp69_;
+@@ -2561,9 +2563,9 @@
+ g_variant_unref (_tmp75_);
+ _tmp67_.details = g_memdup (&_tmp71_, sizeof (PlaylistDetails));
+ g_variant_unref (_tmp70_);
+- value = _tmp67_;
++ value = g_memdup (&_tmp67_, sizeof (ActivePlaylistContainer));
+ mpris_playlists_set_ActivePlaylist (self, &value);
+- active_playlist_container_destroy (&value);
++ _active_playlist_container_free0 (value);
+ }
+
+
+
+=== modified file 'src/mpris2-interfaces.vala'
+--- old/src/mpris2-interfaces.vala 2012-03-16 17:59:34 +0000
++++ new/src/mpris2-interfaces.vala 2012-03-20 20:19:44 +0000
+@@ -65,7 +65,7 @@
+ //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;
+
diff --git a/debian/patches/series b/debian/patches/series
index ff4afad..ee53798 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,2 +1,2 @@
sound_nua.patch
-
+lp_945827.patch