From e419e1c4e212b1195c8e531fd6eeb4a0b80108d3 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Thu, 18 Jun 2015 10:36:23 -0400 Subject: [PATCH] GTask: Avoid resorting When a task is cancelled, we want to move it to the front of the queue - our sort function does that for us, but there is no need to resort the entire queue here, we can just move the one item and be done with it. This uses just-introduced threadpool api for this purpose. https://bugzilla.gnome.org/show_bug.cgi?id=751160 --- gio/gtask.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gio/gtask.c b/gio/gtask.c index 2bf82a25d..c2569dc55 100644 --- a/gio/gtask.c +++ b/gio/gtask.c @@ -1296,7 +1296,10 @@ task_thread_cancelled (GCancellable *cancellable, { GTask *task = user_data; - g_task_thread_pool_resort (); + /* Move this task to the front of the queue - no need for + * a complete resorting of the queue. + */ + g_thread_pool_move_to_front (task_pool, task); g_mutex_lock (&task->lock); task->thread_cancelled = TRUE;