diff options
Diffstat (limited to 'src/lib/ethumb_client/ethumb_client.c')
-rw-r--r-- | src/lib/ethumb_client/ethumb_client.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/src/lib/ethumb_client/ethumb_client.c b/src/lib/ethumb_client/ethumb_client.c index e5919f7dbf..70e56bce94 100644 --- a/src/lib/ethumb_client/ethumb_client.c +++ b/src/lib/ethumb_client/ethumb_client.c @@ -204,6 +204,7 @@ _ethumb_client_free(Ethumb_Client *client) if (client->invalid) return; + if (client->dbus_pending) { Eldbus_Pending *pending; EINA_LIST_FREE(client->dbus_pending, pending) @@ -216,8 +217,11 @@ _ethumb_client_free(Ethumb_Client *client) struct _ethumb_pending_add *pending = data; if (pending->pending_call) { - eldbus_pending_cancel(pending->pending_call); + Eldbus_Pending *call = pending->pending_call; + + pending->pending_call = NULL; pending->client = NULL; + eldbus_pending_cancel(call); } else { @@ -245,8 +249,11 @@ _ethumb_client_free(Ethumb_Client *client) pending->free_data(pending->data); if (pending->pending_call) { - eldbus_pending_cancel(pending->pending_call); + Eldbus_Pending *call = pending->pending_call; + + pending->pending_call = NULL; pending->client = NULL; + eldbus_pending_cancel(call); } else { @@ -983,7 +990,7 @@ _ethumb_client_queue_add_cb(void *data, const Eldbus_Message *msg, Eldbus_Pendin pending->pending_call = NULL; if (!client) goto end; client->pending_add = eina_list_remove(client->pending_add, pending); - + if (eldbus_message_error_get(msg, &errname, &errmsg)) { ERR("Error: %s %s", errname, errmsg); @@ -996,7 +1003,7 @@ _ethumb_client_queue_add_cb(void *data, const Eldbus_Message *msg, Eldbus_Pendin goto end; } - + generating = calloc(1, sizeof(*generating)); generating->id = id; generating->file = pending->file; @@ -1050,7 +1057,7 @@ _ethumb_client_queue_add(Ethumb_Client *client, const char *file, const char *ke _ethumb_client_dbus_append_bytearray(main_itr, thumb_key); client->pending_add = eina_list_append(client->pending_add, pending); - + pending->pending_call = eldbus_proxy_send(client->proxy, msg, _ethumb_client_queue_add_cb, pending, -1); |