summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Schermer <nick@xfce.org>2013-07-28 16:33:55 +0200
committerNick Schermer <nick@xfce.org>2013-07-28 18:44:59 +0200
commitb4a9a81442a34dc902689f7e2d5d2b540f5f1704 (patch)
treec30b9a5089660940b69ac0fef1c310f705d78642
parent21c0e5f761153df4ffc420044fd8d9b782354968 (diff)
downloadtumbler-b4a9a81442a34dc902689f7e2d5d2b540f5f1704.tar.gz
Send the cache operation replies after they are completed.
The reply was send when the operation was queued, but this does not allow applications to properly handle new thumbs after a copy/move operation.
-rw-r--r--plugins/xdg-cache/xdg-cache-cache.c14
-rw-r--r--tumblerd/tumbler-cache-service.c38
2 files changed, 30 insertions, 22 deletions
diff --git a/plugins/xdg-cache/xdg-cache-cache.c b/plugins/xdg-cache/xdg-cache-cache.c
index 2037bd9..6c85523 100644
--- a/plugins/xdg-cache/xdg-cache-cache.c
+++ b/plugins/xdg-cache/xdg-cache-cache.c
@@ -300,13 +300,13 @@ xdg_cache_cache_copy_or_move_file (TumblerCache *cache,
const gchar *to_uri,
guint64 mtime)
{
- GFile *from_file;
- GFile *temp_file;
- gchar *temp_path;
- gchar *dest_path;
- gchar *from_path;
- gboolean result;
- GFile *dest_file;
+ GFile *from_file;
+ GFile *temp_file;
+ gchar *temp_path;
+ gchar *dest_path;
+ gchar *from_path;
+ gboolean result;
+ GFile *dest_file;
from_file = xdg_cache_cache_get_file (from_uri, flavor);
temp_file = xdg_cache_cache_get_temp_file (to_uri, flavor);
diff --git a/tumblerd/tumbler-cache-service.c b/tumblerd/tumbler-cache-service.c
index 47d0b8e..ab00645 100644
--- a/tumblerd/tumbler-cache-service.c
+++ b/tumblerd/tumbler-cache-service.c
@@ -99,25 +99,29 @@ struct _TumblerCacheService
struct _MoveRequest
{
- gchar **from_uris;
- gchar **to_uris;
+ gchar **from_uris;
+ gchar **to_uris;
+ DBusGMethodInvocation *context;
};
struct _CopyRequest
{
- gchar **from_uris;
- gchar **to_uris;
+ gchar **from_uris;
+ gchar **to_uris;
+ DBusGMethodInvocation *context;
};
struct _DeleteRequest
{
- gchar **uris;
+ gchar **uris;
+ DBusGMethodInvocation *context;
};
struct _CleanupRequest
{
- guint32 since;
- gchar **base_uris;
+ guint32 since;
+ gchar **base_uris;
+ DBusGMethodInvocation *context;
};
@@ -270,6 +274,8 @@ tumbler_cache_service_move_thread (gpointer data,
(const gchar *const *)request->to_uris);
}
+ dbus_g_method_return (request->context);
+
g_strfreev (request->from_uris);
g_strfreev (request->to_uris);
g_slice_free (MoveRequest, request);
@@ -302,6 +308,8 @@ tumbler_cache_service_copy_thread (gpointer data,
(const gchar *const *)request->to_uris);
}
+ dbus_g_method_return (request->context);
+
g_strfreev (request->from_uris);
g_strfreev (request->to_uris);
g_slice_free (CopyRequest, request);
@@ -330,6 +338,8 @@ tumbler_cache_service_delete_thread (gpointer data,
if (service->cache != NULL)
tumbler_cache_delete (service->cache, (const gchar *const *)request->uris);
+ dbus_g_method_return (request->context);
+
g_strfreev (request->uris);
g_slice_free (DeleteRequest, request);
@@ -361,6 +371,8 @@ tumbler_cache_service_cleanup_thread (gpointer data,
request->since);
}
+ dbus_g_method_return (request->context);
+
g_strfreev (request->base_uris);
g_slice_free (CleanupRequest, request);
@@ -445,11 +457,10 @@ tumbler_cache_service_move (TumblerCacheService *service,
request = g_slice_new0 (MoveRequest);
request->from_uris = g_strdupv ((gchar **)from_uris);
request->to_uris = g_strdupv ((gchar **)to_uris);
+ request->context = context;
g_thread_pool_push (service->move_pool, request, NULL);
- dbus_g_method_return (context);
-
/* try to keep tumbler alive */
tumbler_component_keep_alive (TUMBLER_COMPONENT (service), NULL);
}
@@ -476,11 +487,10 @@ tumbler_cache_service_copy (TumblerCacheService *service,
request = g_slice_new0 (CopyRequest);
request->from_uris = g_strdupv ((gchar **)from_uris);
request->to_uris = g_strdupv ((gchar **)to_uris);
+ request->context = context;
g_thread_pool_push (service->copy_pool, request, NULL);
- dbus_g_method_return (context);
-
/* try to keep tumbler alive */
tumbler_component_keep_alive (TUMBLER_COMPONENT (service), NULL);
}
@@ -503,11 +513,10 @@ tumbler_cache_service_delete (TumblerCacheService *service,
request = g_slice_new0 (DeleteRequest);
request->uris = g_strdupv ((gchar **)uris);
+ request->context = context;
g_thread_pool_push (service->delete_pool, request, NULL);
- dbus_g_method_return (context);
-
/* try to keep tumbler alive */
tumbler_component_keep_alive (TUMBLER_COMPONENT (service), NULL);
}
@@ -531,11 +540,10 @@ tumbler_cache_service_cleanup (TumblerCacheService *service,
request = g_slice_new0 (CleanupRequest);
request->base_uris = g_strdupv ((gchar **)base_uris);
request->since = since;
+ request->context = context;
g_thread_pool_push (service->cleanup_pool, request, NULL);
- dbus_g_method_return (context);
-
/* try to keep tumbler alive */
tumbler_component_keep_alive (TUMBLER_COMPONENT (service), NULL);
}