aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--debian/changelog8
-rw-r--r--debian/patches/series1
-rw-r--r--debian/patches/sound_xubuntu.patch17
-rw-r--r--src/metadata-widget.c2
-rw-r--r--src/mpris2-controller.c188
-rw-r--r--src/mpris2-controller.vala25
-rw-r--r--src/mpris2-interfaces.c42
-rw-r--r--src/mpris2-interfaces.vala2
-rw-r--r--src/sound-service-dbus.c10
9 files changed, 224 insertions, 71 deletions
diff --git a/debian/changelog b/debian/changelog
index e3f7318..06092a6 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,11 @@
+indicator-sound (0.8.4.1-0ubuntu4) precise; urgency=low
+
+ * debian/patches:
+ - sound_xubuntu.patch: added, prefer pavucontrol over xfce4-mixer on
+ Xubuntu. (lp: #961745)
+
+ -- Lionel Le Folgoc <mrpouit@ubuntu.com> Thu, 22 Mar 2012 00:17:34 +0100
+
indicator-sound (0.8.4.1-0ubuntu3) precise; urgency=low
* debian/patches/lp_960846.patch
diff --git a/debian/patches/series b/debian/patches/series
index 1fa9dfb..19a2a69 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,3 +1,4 @@
sound_nua.patch
+sound_xubuntu.patch
lp_945827.patch
lp_960846.patch
diff --git a/debian/patches/sound_xubuntu.patch b/debian/patches/sound_xubuntu.patch
new file mode 100644
index 0000000..bbf3db2
--- /dev/null
+++ b/debian/patches/sound_xubuntu.patch
@@ -0,0 +1,17 @@
+Description: Use pavucontrol on Xubuntu by default
+ Xfce4-mixer uses gstreamer0.10-pulseaudio, which doesn't provide full access
+ to all audio channels, only to 'Master'.
+Author: Lionel Le Folgoc <mrpouit@ubuntu.com>
+Last-Update: 2012-03-21
+
+--- indicator-sound-0.8.4.1.orig/src/sound-service-dbus.c
++++ indicator-sound-0.8.4.1/src/sound-service-dbus.c
+@@ -230,6 +230,8 @@ show_sound_settings_dialog (DbusmenuMenu
+ gchar* cmd;
+ if (!g_strcmp0 (g_getenv ("XDG_CURRENT_DESKTOP"), "Unity"))
+ cmd = "gnome-control-center sound-nua";
++ else if (!g_strcmp0 (g_getenv ("DESKTOP_SESSION"), "xubuntu"))
++ cmd = "pavucontrol";
+ else
+ cmd = "gnome-control-center sound";
+
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.c b/src/mpris2-controller.c
index 57250b6..a471d07 100644
--- a/src/mpris2-controller.c
+++ b/src/mpris2-controller.c
@@ -151,6 +151,7 @@ typedef struct _PlaylistsMenuitem PlaylistsMenuitem;
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 @@ struct _MprisPlaylistsIface {
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 @@ struct _Mpris2ControllerFetchPlaylistsData {
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 @@ PlaylistDetails* mpris_playlists_GetPlaylists_finish (MprisPlaylists* self, GAsy
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 @@ void mpris2_controller_property_changed_cb (Mpris2Controller* self, const gchar*
}
_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 @@ static gboolean mpris2_controller_fetch_playlists_co (Mpris2ControllerFetchPlayl
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,136 @@ static gboolean mpris2_controller_fetch_playlists_co (Mpris2ControllerFetchPlayl
}
-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* _tmp5_;
+ ActivePlaylistContainer* _tmp6_;
+ ActivePlaylistContainer* _tmp7_;
+ ActivePlaylistContainer* _tmp8_;
+ gboolean _tmp9_;
+ gboolean _tmp10_;
+ MprisPlaylists* _tmp11_;
+ ActivePlaylistContainer* _tmp12_;
+ ActivePlaylistContainer* _tmp13_;
+ ActivePlaylistContainer* _tmp14_;
+ PlaylistDetails* _tmp15_;
+ gboolean _tmp16_;
+ gboolean _tmp17_ = FALSE;
+ MprisPlaylists* _tmp18_;
+ ActivePlaylistContainer* _tmp19_;
+ ActivePlaylistContainer* _tmp20_;
+ ActivePlaylistContainer* _tmp21_;
+ PlaylistDetails* _tmp22_;
+ const char* _tmp23_;
+ gboolean _tmp24_;
+ gboolean _tmp31_;
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;
- _tmp5_ = _tmp4_ == FALSE;
- active_playlist_container_destroy (&_tmp3_);
- if (_tmp5_) {
+ _tmp4_ = _tmp3_ == NULL;
+ _active_playlist_container_free0 (_tmp3_);
+ if (_tmp4_) {
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_;
+ _tmp5_ = self->priv->_playlists;
+ _tmp6_ = mpris_playlists_get_ActivePlaylist (_tmp5_);
+ _tmp7_ = _tmp6_;
+ _tmp8_ = _tmp7_;
+ _tmp9_ = (*_tmp8_).valid;
+ _tmp10_ = _tmp9_ == FALSE;
+ _active_playlist_container_free0 (_tmp8_);
+ if (_tmp10_) {
+ result = FALSE;
+ return result;
+ }
+ _tmp11_ = self->priv->_playlists;
+ _tmp12_ = mpris_playlists_get_ActivePlaylist (_tmp11_);
_tmp13_ = _tmp12_;
- _tmp14_ = _tmp13_.details;
- _tmp15_ = *_tmp14_;
- playlists_menuitem_active_playlist_update (_tmp9_, &_tmp15_);
- active_playlist_container_destroy (&_tmp13_);
+ _tmp14_ = _tmp13_;
+ _tmp15_ = (*_tmp14_).details;
+ _tmp16_ = _tmp15_ == NULL;
+ _active_playlist_container_free0 (_tmp14_);
+ if (_tmp16_) {
+ result = FALSE;
+ return result;
+ }
+ _tmp18_ = self->priv->_playlists;
+ _tmp19_ = mpris_playlists_get_ActivePlaylist (_tmp18_);
+ _tmp20_ = _tmp19_;
+ _tmp21_ = _tmp20_;
+ _tmp22_ = (*_tmp21_).details;
+ _tmp23_ = (*_tmp22_).path;
+ _tmp24_ = _tmp23_ == NULL;
+ _active_playlist_container_free0 (_tmp21_);
+ if (_tmp24_) {
+ _tmp17_ = TRUE;
+ } else {
+ MprisPlaylists* _tmp25_;
+ ActivePlaylistContainer* _tmp26_;
+ ActivePlaylistContainer* _tmp27_;
+ ActivePlaylistContainer* _tmp28_;
+ PlaylistDetails* _tmp29_;
+ const gchar* _tmp30_;
+ _tmp25_ = self->priv->_playlists;
+ _tmp26_ = mpris_playlists_get_ActivePlaylist (_tmp25_);
+ _tmp27_ = _tmp26_;
+ _tmp28_ = _tmp27_;
+ _tmp29_ = (*_tmp28_).details;
+ _tmp30_ = (*_tmp29_).name;
+ _tmp17_ = _tmp30_ == NULL;
+ _active_playlist_container_free0 (_tmp28_);
+ }
+ _tmp31_ = _tmp17_;
+ if (_tmp31_) {
+ 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 +1396,7 @@ void mpris2_controller_activate_playlist (Mpris2Controller* self, const char* pa
_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:283: Could not activate playlist %s because %s", (const gchar*) _tmp2_, _tmp4_);
_g_error_free0 (e);
}
__finally13:
diff --git a/src/mpris2-controller.vala b/src/mpris2-controller.vala
index 0fa7b6c..2cc8d12 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,33 @@ 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 == null){
+ return false;
+ }
+ 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.c b/src/mpris2-interfaces.c
index 9058f95..d625955 100644
--- a/src/mpris2-interfaces.c
+++ b/src/mpris2-interfaces.c
@@ -70,6 +70,7 @@ typedef struct _MprisPlaylistsIface MprisPlaylistsIface;
#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 @@ struct _MprisPlaylistsIface {
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 @@ gchar** mpris_playlists_get_Orderings (MprisPlaylists* self, int* result_length1
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 gchar** mpris_playlists_dbus_proxy_get_Orderings (MprisPlaylists* self, i
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_set_PlaylistCount (MprisPlaylists* self, guint32 value) {
}
-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_set_PlaylistCount (MprisPlaylists* self,
}
-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 @@ static void mpris_playlists_dbus_proxy_get_ActivePlaylist (MprisPlaylists* self,
_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 @@ static void mpris_playlists_dbus_proxy_get_ActivePlaylist (MprisPlaylists* self,
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_PlaylistCount (MprisPlaylists* self)
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_PlaylistCount (MprisPlaylists* self, GVari
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 @@ static void _dbus_mpris_playlists_set_ActivePlaylist (MprisPlaylists* self, GVar
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);
}
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;
diff --git a/src/sound-service-dbus.c b/src/sound-service-dbus.c
index 7cad2bc..cac7570 100644
--- a/src/sound-service-dbus.c
+++ b/src/sound-service-dbus.c
@@ -227,8 +227,16 @@ show_sound_settings_dialog (DbusmenuMenuitem *mi,
gpointer user_data)
{
GError * error = NULL;
+ gchar* cmd;
+ if (!g_strcmp0 (g_getenv ("XDG_CURRENT_DESKTOP"), "Unity"))
+ cmd = "gnome-control-center sound-nua";
+ else if (!g_strcmp0 (g_getenv ("DESKTOP_SESSION"), "xubuntu"))
+ cmd = "pavucontrol";
+ else
+ cmd = "gnome-control-center sound";
+
if (!g_spawn_command_line_async("gnome-volume-control --page=applications", &error) &&
- !g_spawn_command_line_async("gnome-control-center sound", &error) &&
+ !g_spawn_command_line_async(cmd, &error) &&
!g_spawn_command_line_async("xfce4-mixer", &error))
{
g_warning("Unable to show dialog: %s", error->message);