gvfs r2167 - in trunk: . daemon daemon/trashlib



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]