diff options
author | Denis Kenzior <denkenz@gmail.com> | 2013-02-07 10:22:57 -0600 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2013-02-14 08:47:10 -0600 |
commit | 1d4d3f1fb9a9bf83807937b272390ee5db05e5d0 (patch) | |
tree | a817ed3f4c9aab71631aa779187e1cd157109af6 /gdbus | |
parent | 233b1ecca45ad8f16870aee7f7ec2235dd49cd54 (diff) | |
download | ofono-1d4d3f1fb9a9bf83807937b272390ee5db05e5d0.tar.bz2 |
gdbus: Add g_dbus_proxy_set_removed_watch
Diffstat (limited to 'gdbus')
-rw-r--r-- | gdbus/client.c | 17 | ||||
-rw-r--r-- | gdbus/gdbus.h | 3 |
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); |