summaryrefslogtreecommitdiff
path: root/src-ng/nautilus-file-changes.c
diff options
context:
space:
mode:
Diffstat (limited to 'src-ng/nautilus-file-changes.c')
-rw-r--r--src-ng/nautilus-file-changes.c115
1 files changed, 31 insertions, 84 deletions
diff --git a/src-ng/nautilus-file-changes.c b/src-ng/nautilus-file-changes.c
index 0f9752fab..c912e631f 100644
--- a/src-ng/nautilus-file-changes.c
+++ b/src-ng/nautilus-file-changes.c
@@ -38,9 +38,6 @@ static void move_change_free (MoveChange *change);
G_DEFINE_AUTOPTR_CLEANUP_FUNC (MoveChange, move_change_free)
-static guint source = 0;
-static GMutex source_mutex;
-
static void
move_change_free (MoveChange *change)
{
@@ -49,94 +46,48 @@ move_change_free (MoveChange *change)
g_free (change);
}
-static gpointer
-init_default_queue (gpointer data)
-{
- return g_async_queue_new ();
-}
-
-static GAsyncQueue *
-get_default_queue (void)
-{
- static GOnce once = G_ONCE_INIT;
-
- g_once (&once, init_default_queue, NULL);
-
- return once.retval;
-}
-
-static gboolean
-emit_signals (gpointer user_data)
+static void
+emit_signal_for_change (Change *change)
{
- GAsyncQueue *queue;
- Change *change;
-
- queue = user_data;
-
- g_async_queue_lock (queue);
+ g_autoptr (NautilusFile) file = NULL;
+ g_autoptr (NautilusFile) parent = NULL;
- while ((change = g_async_queue_try_pop_unlocked (queue)) != NULL)
+ file = nautilus_file_new (change->location);
+ if (file == NULL)
{
- g_autoptr (NautilusFile) file = NULL;
- g_autoptr (NautilusFile) parent = NULL;
-
- file = nautilus_file_new (change->location);
- if (file == NULL)
- {
- continue;
- }
- parent = nautilus_file_get_parent (file);
+ return;
+ }
+ parent = nautilus_file_get_parent (file);
- switch (change->type)
+ switch (change->type)
+ {
+ case NAUTILUS_FILE_CHANGE_RENAMED:
{
- case NAUTILUS_FILE_CHANGE_RENAMED:
- {
- g_autoptr (MoveChange) move_change = NULL;
+ g_autoptr (MoveChange) move_change = NULL;
- move_change = (MoveChange *) change;
+ move_change = (MoveChange *) change;
- nautilus_emit_signal_in_main_context_by_name (file,
- NULL,
- "renamed",
- move_change->location_to);
+ nautilus_emit_signal_in_main_context_by_name (file,
+ NULL,
+ "renamed",
+ move_change->location_to);
- if (parent == NULL)
- {
- break;
- }
-
- nautilus_emit_signal_in_main_context_by_name (parent,
- NULL,
- "children-changed");
+ if (parent == NULL)
+ {
+ break;
}
- break;
- }
- }
-
- g_async_queue_unlock (queue);
- g_mutex_lock (&source_mutex);
- source = 0;
- g_mutex_unlock (&source_mutex);
-
- return G_SOURCE_REMOVE;
-}
-
-static void
-schedule_signal_emission (void)
-{
- g_mutex_lock (&source_mutex);
+ nautilus_emit_signal_in_main_context_by_name (parent,
+ NULL,
+ "children-changed");
+ }
+ break;
- if (source == 0)
- {
- source = g_timeout_add (100, emit_signals, get_default_queue ());
- }
- else
- {
- g_source_remove (source);
+ case NAUTILUS_FILE_CHANGE_MOVED:
+ {
+ }
+ break;
}
-
- g_mutex_unlock (&source_mutex);
}
static void
@@ -145,19 +96,15 @@ notify_file_moved_or_renamed (GFile *from,
gboolean move_is_rename)
{
MoveChange *change;
- GAsyncQueue *queue;
change = g_new0 (MoveChange, 1);
- queue = get_default_queue ();
change->type = move_is_rename? NAUTILUS_FILE_CHANGE_RENAMED
: NAUTILUS_FILE_CHANGE_MOVED;
change->location_from = g_object_ref (from);
change->location_to = g_object_ref (to);
- g_async_queue_push (queue, change);
-
- schedule_signal_emission ();
+ emit_signal_for_change ((Change *) change);
}
void