From 41eccca56ea0ab837187711e857b9237df939221 Mon Sep 17 00:00:00 2001 From: Gergely POLONKAI Date: Mon, 14 May 2012 22:48:17 +0200 Subject: [PATCH] Switched to GIO instead of DBus-GLib Signed-off-by: Gergely POLONKAI --- configure.ac | 2 +- src/Makefile.am | 4 ++-- src/media-remote-control.c | 49 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 52 insertions(+), 3 deletions(-) diff --git a/configure.ac b/configure.ac index 3ac98c2..9a9c3a4 100644 --- a/configure.ac +++ b/configure.ac @@ -20,6 +20,6 @@ GTK_DOC_CHECK([1.14], [--flavour no-tmpl]) AM_CONDITIONAL([ENABLE_GTK_DOC], false) ]) -PKG_CHECK_MODULES([DBUS_GLIB], dbus-glib-1) +PKG_CHECK_MODULES([GIO], gio-2.0) AC_OUTPUT([Makefile src/Makefile docs/reference/media-remote-control/Makefile]) diff --git a/src/Makefile.am b/src/Makefile.am index e0042b1..5eab67e 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,5 +1,5 @@ bin_PROGRAMS = media-remote-control -AM_CPPFLAGS = $(DBUS_GLIB_CFLAGS) +AM_CPPFLAGS = $(GIO_CFLAGS) media_remote_control_SOURCES = media-remote-control.c -media_remote_control_LDADD = $(DBUS_GLIB_LIBS) +media_remote_control_LDADD = $(GIO_LIBS) diff --git a/src/media-remote-control.c b/src/media-remote-control.c index c08c856..0e8aebc 100644 --- a/src/media-remote-control.c +++ b/src/media-remote-control.c @@ -1,6 +1,55 @@ +#include +#include + int main(int argc, char **argv) { + GDBusProxy *player_proxy; + GError *err = NULL; + GVariant *ret, *value; + GVariantIter iter; + gchar *key; + + g_type_init(); + + /* connection, flags, info, name, object_path, interface_name, cancellable, error) */ + player_proxy = g_dbus_proxy_new_for_bus_sync(G_BUS_TYPE_SESSION, G_DBUS_PROXY_FLAGS_NONE, NULL, "org.mpris.MediaPlayer2.rhythmbox", "/org/mpris/MediaPlayer2", "org.mpris.MediaPlayer2.Player", NULL, &err); + + g_clear_error(&err); + /* + if (g_dbus_proxy_call_sync(player_proxy, "Next", NULL, G_DBUS_CALL_FLAGS_NONE, -1, NULL, &err) == NULL) + { + g_print("Meh: %s\n", err->message); + } + */ + ret = g_dbus_proxy_get_cached_property(player_proxy, "Metadata"); + g_variant_iter_init(&iter, ret); + while (g_variant_iter_next(&iter, "{sv}", &key, &value)) + { + if (g_ascii_strcasecmp("xesam:title", key) == 0) + { + g_print("Title: %s\n", g_variant_get_string(value, NULL)); + } + if (g_ascii_strcasecmp("xesam:artist", key) == 0) + { + const gchar **artist; + gsize alen, i; + + g_print("Artist info:\n"); + artist = g_variant_get_strv(value, &alen); + for (i = 0; i < alen; i++) + { + g_print("\t%s\n", artist[i]); + } + } + if (g_ascii_strcasecmp("xesam:album", key) == 0) + { + g_print("Album: %s\n", g_variant_get_string(value, NULL)); + } + + //g_print("'%s' is of type %s\n", key, g_variant_get_type_string(value)); + } + g_variant_unref(value); return 0; }