gdbus: Add g_dbus_proxy_set_removed_watch

This commit is contained in:
Denis Kenzior 2013-02-07 10:22:57 -06:00
parent 233b1ecca4
commit 1d4d3f1fb9
2 changed files with 20 additions and 0 deletions

View File

@ -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;

View File

@ -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);