aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorConor Curran <conor.curran@canonical.com>2011-06-21 18:26:10 +0200
committerConor Curran <conor.curran@canonical.com>2011-06-21 18:26:10 +0200
commita6dee99edd1a3870c4dc4557f605578c52a4f0dc (patch)
tree6945b0519d0579577c0d8cd5316c626215449c77
parent5e112656817e193c26ee462f4beffb83c08858f4 (diff)
downloadayatana-indicator-sound-a6dee99edd1a3870c4dc4557f605578c52a4f0dc.tar.gz
ayatana-indicator-sound-a6dee99edd1a3870c4dc4557f605578c52a4f0dc.tar.bz2
ayatana-indicator-sound-a6dee99edd1a3870c4dc4557f605578c52a4f0dc.zip
custom marshaller in place to handle the string string signature on our item specific dbus methods
-rw-r--r--configure.ac3
-rw-r--r--src/Makefile.am10
-rw-r--r--src/sound-service-dbus.c31
-rw-r--r--src/sound-service.c3
-rw-r--r--src/sound-service.xml4
5 files changed, 37 insertions, 14 deletions
diff --git a/configure.ac b/configure.ac
index ab02d4e..b7525d7 100644
--- a/configure.ac
+++ b/configure.ac
@@ -23,6 +23,8 @@ AC_CONFIG_MACRO_DIR([m4])
m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
+AC_PATH_PROG([GLIB_GENMARSHAL], [glib-genmarshal])
+
###########################
# Dependencies
###########################
@@ -96,6 +98,7 @@ AC_SUBST(INDICATORICONSDIR)
###########################
GLIB_GSETTINGS
+GLIB_GENMARSHAL
###########################
# DBus Service Info
diff --git a/src/Makefile.am b/src/Makefile.am
index fde333a..fedf5de 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -30,6 +30,7 @@ libsoundmenu_la_CFLAGS = $(APPLET_CFLAGS) -Wall -Werror -DG_LOG_DOMAIN=\"Indicat
libsoundmenu_la_LIBADD = $(APPLET_LIBS)
libsoundmenu_la_LDFLAGS = -module -avoid-version
+
checkxml: $(srcdir)/sound-service.xml
@xmllint -valid -noout $<
@echo $< checks out ok
@@ -39,6 +40,9 @@ checkxml: $(srcdir)/sound-service.xml
# Sound Service
####################################################################
+glib_marshal_list = sound-service-marshal.list
+glib_marshal_prefix = _sound_service_marshal
+
#####################
# Sound service vala
@@ -106,6 +110,8 @@ indicator_sound_service_SOURCES = \
mute-menu-item.c \
gen-sound-service.xml.h \
gen-sound-service.xml.c \
+ sound-service-marshal.c \
+ sound-service-marshal.h \
$(music_bridge_VALASOURCES:.vala=.c)
indicator_sound_service_CFLAGS = $(PULSEAUDIO_CFLAGS) $(SOUNDSERVICE_CFLAGS) $(GCONF_CFLAGS) -DLIBEXECDIR=\"$(libexecdir)\" -Wall
@@ -146,3 +152,7 @@ BUILT_SOURCES = \
CLEANFILES = \
$(BUILT_SOURCES)
+
+DISTCLEANFILES =
+
+include $(top_srcdir)/Makefile.am.marshal
diff --git a/src/sound-service-dbus.c b/src/sound-service-dbus.c
index 5d7c4cd..d546ceb 100644
--- a/src/sound-service-dbus.c
+++ b/src/sound-service-dbus.c
@@ -32,6 +32,7 @@
#include "device.h"
#include "gen-sound-service.xml.h"
#include "dbus-shared-names.h"
+#include "sound-service-marshal.h"
// DBUS methods
static void bus_method_call (GDBusConnection * connection,
@@ -123,7 +124,7 @@ sound_service_dbus_class_init (SoundServiceDbusClass *klass)
G_SIGNAL_RUN_LAST,
0,
NULL, NULL,
- g_cclosure_marshal_VOID__STRING,
+ _sound_service_marshal_VOID__STRING_STRING,
G_TYPE_NONE, 2, G_TYPE_STRING,
G_TYPE_STRING);
signals[PLAYER_SPECIFIC_ITEM] = g_signal_new("player-specific-item-requested",
@@ -131,7 +132,7 @@ sound_service_dbus_class_init (SoundServiceDbusClass *klass)
G_SIGNAL_RUN_LAST,
0,
NULL, NULL,
- g_cclosure_marshal_VOID__STRING,
+ _sound_service_marshal_VOID__STRING_STRING,
G_TYPE_NONE, 2, G_TYPE_STRING,
G_TYPE_STRING);
}
@@ -321,23 +322,31 @@ bus_method_call (GDBusConnection * connection,
retval = g_variant_new ("(b)", result);
}
else if (g_strcmp0(method, "EnableTrackSpecificItems") == 0) {
- gchar** player_object_path_and_id;
- g_variant_get (params, "(ss)", &player_object_path_and_id);
- /*g_debug ("EnableTrackSpecificItems - name %s", player_object_path);
+ gchar* player_object_path;
+ gchar* player_id;
+ g_variant_get (params, "(os)", &player_object_path, &player_id);
+ //g_debug ("object path = %s and id = %s", player_object_path, player_id);
g_signal_emit (service,
signals[TRACK_SPECIFIC_ITEM],
0,
- player_object_path);*/
+ player_object_path,
+ player_id);
+ g_free (player_object_path);
+ g_free (player_id);
}
else if (g_strcmp0(method, "EnablePlayerSpecificItems") == 0) {
- /*gchar* player_object_path;
- g_variant_get (params, "(s)", &player_object_path);
- g_debug ("EnableTrackSpecificItems - name %s", player_object_path);
+ gchar* player_object_path;
+ gchar* player_id;
+ g_variant_get (params, "(os)", &player_object_path, &player_id);
+ //g_debug ("object path = %s and id = %s", player_object_path, player_id);
g_signal_emit (service,
- signals[TRACK_SPECIFIC_ITEM],
+ signals[PLAYER_SPECIFIC_ITEM],
0,
- player_object_path);*/
+ player_object_path,
+ player_id);
+ g_free (player_object_path);
+ g_free (player_id);
}
else {
g_warning("Calling method '%s' on the sound service but it's unknown", method);
diff --git a/src/sound-service.c b/src/sound-service.c
index dd957a0..9e22485 100644
--- a/src/sound-service.c
+++ b/src/sound-service.c
@@ -17,11 +17,12 @@ You should have received a copy of the GNU General Public License along
with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+#include <locale.h>
+
#include "sound-service.h"
#include "pulseaudio-mgr.h"
#include "sound-service-dbus.h"
#include "music-player-bridge.h"
-#include <locale.h>
static GMainLoop *mainloop = NULL;
static MusicPlayerBridge* player_bridge;
diff --git a/src/sound-service.xml b/src/sound-service.xml
index af0f136..796fa22 100644
--- a/src/sound-service.xml
+++ b/src/sound-service.xml
@@ -18,13 +18,13 @@
</method>
<method name = "EnableTrackSpecificItems">
<annotation name="org.freedesktop.DBus.GLib.Async" value="true"/>
- <arg type='s' name='player_object_path' direction="in"/>
+ <arg type='o' name='player_object_path' direction="in"/>
<arg type='s' name='player_desktop_id' direction="in"/>
</method>
<method name = "EnablePlayerSpecificItems">
<annotation name="org.freedesktop.DBus.GLib.Async" value="true"/>
+ <arg type='o' name='player_object_path' direction="in"/>
<arg type='s' name='player_desktop_id' direction="in"/>
- <arg type='s' name='player_object_path' direction="in"/>
</method>
<signal name="SoundStateUpdate">
<arg name="new_state" type="i" direction="out"/>