summaryrefslogtreecommitdiffstats
path: root/gdbus
diff options
context:
space:
mode:
authorDenis Kenzior <denkenz@gmail.com>2013-02-07 10:22:57 -0600
committerDenis Kenzior <denkenz@gmail.com>2013-02-14 08:47:10 -0600
commit1d4d3f1fb9a9bf83807937b272390ee5db05e5d0 (patch)
treea817ed3f4c9aab71631aa779187e1cd157109af6 /gdbus
parent233b1ecca45ad8f16870aee7f7ec2235dd49cd54 (diff)
downloadofono-1d4d3f1fb9a9bf83807937b272390ee5db05e5d0.tar.bz2
gdbus: Add g_dbus_proxy_set_removed_watch
Diffstat (limited to 'gdbus')
-rw-r--r--gdbus/client.c17
-rw-r--r--gdbus/gdbus.h3
2 files changed, 20 insertions, 0 deletions
diff --git a/gdbus/client.c b/gdbus/client.c
index 0311f9a4..369e3acf 100644
--- a/gdbus/client.c
+++ b/gdbus/client.c
@@ -62,6 +62,8 @@ struct GDBusProxy {
char *match_rule;
GDBusPropertyFunction prop_func;
void *prop_data;
+ GDBusProxyFunction removed_func;
+ void *removed_data;
};
struct prop_entry {
@@ -394,6 +396,9 @@ static void proxy_free(gpointer data)
proxy->client = NULL;
}
+ if (proxy->removed_func)
+ proxy->removed_func(proxy, proxy->removed_data);
+
g_dbus_proxy_unref(proxy);
}
@@ -761,6 +766,18 @@ gboolean g_dbus_proxy_set_property_watch(GDBusProxy *proxy,
return TRUE;
}
+gboolean g_dbus_proxy_set_removed_watch(GDBusProxy *proxy,
+ GDBusProxyFunction function, void *user_data)
+{
+ if (proxy == NULL)
+ return FALSE;
+
+ proxy->removed_func = function;
+ proxy->removed_data = user_data;
+
+ return TRUE;
+}
+
static void refresh_properties(GDBusClient *client)
{
GList *list;
diff --git a/gdbus/gdbus.h b/gdbus/gdbus.h
index 6f5a0121..8b133939 100644
--- a/gdbus/gdbus.h
+++ b/gdbus/gdbus.h
@@ -341,6 +341,9 @@ typedef void (* GDBusPropertyFunction) (GDBusProxy *proxy, const char *name,
gboolean g_dbus_proxy_set_property_watch(GDBusProxy *proxy,
GDBusPropertyFunction function, void *user_data);
+gboolean g_dbus_proxy_set_removed_watch(GDBusProxy *proxy,
+ GDBusProxyFunction destroy, void *user_data);
+
GDBusClient *g_dbus_client_new(DBusConnection *connection,
const char *service, const char *path);