summaryrefslogtreecommitdiff
path: root/demo/gclue-service-agent.c
diff options
context:
space:
mode:
authorZeeshan Ali (Khattak) <zeeshanak@gnome.org>2014-03-21 16:39:40 +0000
committerZeeshan Ali (Khattak) <zeeshanak@gnome.org>2014-03-21 16:42:46 +0000
commita80a5416c25dda1662935616f2c2088449a826d1 (patch)
tree61f06535fc91a24f0596e6d38e0fd7fec925f231 /demo/gclue-service-agent.c
parent7773368526278a4bfd9dcc2a6f3ef91d5c5b8b64 (diff)
downloadgeoclue-a80a5416c25dda1662935616f2c2088449a826d1.tar.gz
demo: Agent prints 'geolocation in use' info
https://bugs.freedesktop.org/show_bug.cgi?id=76268
Diffstat (limited to 'demo/gclue-service-agent.c')
-rw-r--r--demo/gclue-service-agent.c42
1 files changed, 42 insertions, 0 deletions
diff --git a/demo/gclue-service-agent.c b/demo/gclue-service-agent.c
index fa8d1c4..5b51c23 100644
--- a/demo/gclue-service-agent.c
+++ b/demo/gclue-service-agent.c
@@ -160,6 +160,43 @@ on_add_agent_ready (GObject *source_object,
}
static void
+print_in_use_info (GDBusProxy *manager_proxy)
+{
+ GVariant *variant;
+
+ variant = g_dbus_proxy_get_cached_property (manager_proxy, "InUse");
+
+ if (g_variant_get_boolean (variant))
+ g_print (_("Geolocation service in use\n"));
+ else
+ g_print (_("Geolocation service not in use\n"));
+}
+
+static void
+on_manager_props_changed (GDBusProxy *manager_proxy,
+ GVariant *changed_properties,
+ GStrv invalidated_properties,
+ gpointer user_data)
+{
+ GVariantIter *iter;
+ GVariant *value;
+ gchar *key;
+
+ if (g_variant_n_children (changed_properties) < 0)
+ return;
+
+ g_variant_get (changed_properties, "a{sv}", &iter);
+ while (g_variant_iter_loop (iter, "{&sv}", &key, &value)) {
+ if (strcmp (key, "InUse") != 0)
+ continue;
+
+ print_in_use_info (manager_proxy);
+ break;
+ }
+ g_variant_iter_free (iter);
+}
+
+static void
on_manager_proxy_ready (GObject *source_object,
GAsyncResult *res,
gpointer user_data)
@@ -188,6 +225,11 @@ on_manager_proxy_ready (GObject *source_object,
g_task_get_cancellable (task),
on_add_agent_ready,
task);
+ print_in_use_info (proxy);
+ g_signal_connect (proxy,
+ "g-properties-changed",
+ G_CALLBACK (on_manager_props_changed),
+ agent);
}
static void