gvfs r2167 - in trunk: . daemon daemon/trashlib
- From: ryanl svn gnome org
- To: svn-commits-list gnome org
- Subject: gvfs r2167 - in trunk: . daemon daemon/trashlib
- Date: Mon, 12 Jan 2009 20:14:44 +0000 (UTC)
Author: ryanl
Date: Mon Jan 12 20:14:44 2009
New Revision: 2167
URL: http://svn.gnome.org/viewvc/gvfs?rev=2167&view=rev
Log:
2009-01-12 Ryan Lortie <desrt desrt ca>
* daemon/trashlib/trashitem.c: don't insta-thaw deletes
* daemon/gvfsbackendtrash.c: use a timeout to only call thaw() once
per batch of delete method calls.
Modified:
trunk/ChangeLog
trunk/daemon/gvfsbackendtrash.c
trunk/daemon/trashlib/trashitem.c
Modified: trunk/daemon/gvfsbackendtrash.c
==============================================================================
--- trunk/daemon/gvfsbackendtrash.c (original)
+++ trunk/daemon/gvfsbackendtrash.c Mon Jan 12 20:14:44 2009
@@ -36,6 +36,8 @@
TrashWatcher *watcher;
TrashRoot *root;
+
+ guint thaw_timeout_id;
};
G_DEFINE_TYPE (GVfsBackendTrash, g_vfs_backend_trash, G_VFS_TYPE_BACKEND);
@@ -331,6 +333,28 @@
}
static gboolean
+trash_backend_thaw_callback (gpointer user_data)
+{
+ GVfsBackendTrash *backend = user_data;
+
+ trash_root_thaw (backend->root);
+
+ backend->thaw_timeout_id = 0;
+ return FALSE;
+}
+
+static void
+trash_backend_schedule_thaw (GVfsBackendTrash *backend)
+{
+ if (backend->thaw_timeout_id)
+ g_source_remove (backend->thaw_timeout_id);
+
+ backend->thaw_timeout_id = g_timeout_add (200,
+ trash_backend_thaw_callback,
+ backend);
+}
+
+static gboolean
trash_backend_delete (GVfsBackend *vfs_backend,
GVfsJobDelete *job,
const char *filename)
@@ -364,6 +388,7 @@
{
if (trash_item_delete (item, &error))
{
+ trash_backend_schedule_thaw (backend);
g_vfs_job_succeeded (G_VFS_JOB (job));
trash_item_unref (item);
Modified: trunk/daemon/trashlib/trashitem.c
==============================================================================
--- trunk/daemon/trashlib/trashitem.c (original)
+++ trunk/daemon/trashlib/trashitem.c Mon Jan 12 20:14:44 2009
@@ -495,8 +495,6 @@
g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
"Failed to delete the item from the trash");
- trash_root_thaw (item->root);
-
return success;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]