From 84a594eee3b8c3b793526e65936022e0655b99a1 Mon Sep 17 00:00:00 2001 From: Luiz Augusto Von Dentz Date: Sat, 20 Feb 2010 12:16:32 +0200 Subject: [PATCH 1/3] Do not automatically remove watches for service names Services can be owned again so it is perfectly fine to keep the watch. --- gdbus/watch.c | 13 +++++++------ 1 files changed, 7 insertions(+), 6 deletions(-) diff --git a/gdbus/watch.c b/gdbus/watch.c index 1d479fa..e85f288 100644 --- a/gdbus/watch.c +++ b/gdbus/watch.c @@ -386,18 +386,19 @@ static DBusHandlerResult service_filter(DBusConnection *connection, cb->conn_func(connection, cb->user_data); } + /* Only auto remove if it is a bus name watch */ + if (data->argument[0] == ':' && + (!cb->conn_func || !cb->disc_func)) { + filter_data_remove_callback(data, cb); + continue; + } + /* Check if the watch was removed/freed by the callback * function */ if (!g_slist_find(data->callbacks, cb)) continue; data->callbacks = g_slist_remove(data->callbacks, cb); - - if (!cb->conn_func || !cb->disc_func) { - g_free(cb); - continue; - } - data->processed = g_slist_append(data->processed, cb); } -- 1.6.3.3