diff options
author | Carsten Haitzler <raster@rasterman.com> | 2013-02-12 03:47:00 +0000 |
---|---|---|
committer | Carsten Haitzler <raster@rasterman.com> | 2013-02-12 03:47:00 +0000 |
commit | 1c0574d4bfb203eb45157c36643de13aa78bf95c (patch) | |
tree | 6d7ddcb9d788e8a312039bf53f28f421a62f2238 /src/modules | |
parent | 6ba07f8dca7fe294be25ccdf5459ec81212c0340 (diff) | |
download | enlightenment-1c0574d4bfb203eb45157c36643de13aa78bf95c.tar.gz |
cancel pending calls in edbus if shutting down ctx...
SVN revision: 83835
Diffstat (limited to 'src/modules')
-rw-r--r-- | src/modules/systray/e_mod_notifier_host.c | 3 | ||||
-rw-r--r-- | src/modules/systray/e_mod_notifier_host_dbus.c | 13 | ||||
-rw-r--r-- | src/modules/systray/e_mod_notifier_host_private.h | 1 |
3 files changed, 13 insertions, 4 deletions
diff --git a/src/modules/systray/e_mod_notifier_host.c b/src/modules/systray/e_mod_notifier_host.c index e50047f8c7..eec4aa24da 100644 --- a/src/modules/systray/e_mod_notifier_host.c +++ b/src/modules/systray/e_mod_notifier_host.c @@ -334,6 +334,9 @@ systray_notifier_host_init(void) void systray_notifier_host_shutdown(void) { + EDBus_Pending *p; + + EINA_LIST_FREE(ctx->pending, p) edbus_pending_cancel(p); systray_notifier_dbus_shutdown(ctx); free(ctx); ctx = NULL; diff --git a/src/modules/systray/e_mod_notifier_host_dbus.c b/src/modules/systray/e_mod_notifier_host_dbus.c index fc6e683f68..10048d786e 100644 --- a/src/modules/systray/e_mod_notifier_host_dbus.c +++ b/src/modules/systray/e_mod_notifier_host_dbus.c @@ -398,13 +398,14 @@ item_unregistered_local_cb(void *data, const char *service) } static void -name_request_cb(void *data, const EDBus_Message *msg, EDBus_Pending *pending EINA_UNUSED) +name_request_cb(void *data, const EDBus_Message *msg, EDBus_Pending *pending) { const char *error, *error_msg; unsigned flag; EDBus_Object *obj; Context_Notifier_Host *ctx = data; + ctx->pending = eina_list_remove(ctx->pending, pending); if (edbus_message_error_get(msg, &error, &error_msg)) { ERR("%s %s", error, error_msg); @@ -441,11 +442,15 @@ end: void systray_notifier_dbus_init(Context_Notifier_Host *ctx) { + EDBus_Pending *p; + edbus_init(); ctx->conn = edbus_connection_get(EDBUS_CONNECTION_TYPE_SESSION); - edbus_name_request(ctx->conn, - WATCHER_BUS, EDBUS_NAME_REQUEST_FLAG_REPLACE_EXISTING, - name_request_cb, ctx); + if (!ctx->conn) return; + p = edbus_name_request(ctx->conn, + WATCHER_BUS, EDBUS_NAME_REQUEST_FLAG_REPLACE_EXISTING, + name_request_cb, ctx); + if (p) ctx->pending = eina_list_append(ctx->pending, p); } void systray_notifier_dbus_shutdown(Context_Notifier_Host *ctx) diff --git a/src/modules/systray/e_mod_notifier_host_private.h b/src/modules/systray/e_mod_notifier_host_private.h index 3608ca0703..0b00377b0c 100644 --- a/src/modules/systray/e_mod_notifier_host_private.h +++ b/src/modules/systray/e_mod_notifier_host_private.h @@ -37,6 +37,7 @@ struct _Context_Notifier_Host EDBus_Proxy *watcher; Eina_Inlist *item_list; Eina_Inlist *instances; + Eina_List *pending; }; struct _Notifier_Item |