summaryrefslogtreecommitdiff
path: root/src/modules
diff options
context:
space:
mode:
authorCarsten Haitzler <raster@rasterman.com>2013-02-12 03:47:00 +0000
committerCarsten Haitzler <raster@rasterman.com>2013-02-12 03:47:00 +0000
commit1c0574d4bfb203eb45157c36643de13aa78bf95c (patch)
tree6d7ddcb9d788e8a312039bf53f28f421a62f2238 /src/modules
parent6ba07f8dca7fe294be25ccdf5459ec81212c0340 (diff)
downloadenlightenment-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.c3
-rw-r--r--src/modules/systray/e_mod_notifier_host_dbus.c13
-rw-r--r--src/modules/systray/e_mod_notifier_host_private.h1
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