[tracker/async-queries-wip: 5/23] TrackerDBInterfacePool: Add job prioritization.



commit f7cdc37c8aa3acb2515ee7c749de8c8585e5570f
Author: Carlos Garnacho <carlosg gnome org>
Date:   Tue Apr 13 16:41:45 2010 +0200

    TrackerDBInterfacePool: Add job prioritization.

 src/libtracker-db/tracker-db-manager.c |   20 ++++++++++++++++++++
 1 files changed, 20 insertions(+), 0 deletions(-)
---
diff --git a/src/libtracker-db/tracker-db-manager.c b/src/libtracker-db/tracker-db-manager.c
index 82c5367..6277ca5 100644
--- a/src/libtracker-db/tracker-db-manager.c
+++ b/src/libtracker-db/tracker-db-manager.c
@@ -1257,6 +1257,23 @@ pool_job_destroy (PoolJob *job)
 	g_slice_free (PoolJob, job);
 }
 
+static gint
+compare_pool_jobs_func (gconstpointer a,
+                        gconstpointer b,
+                        gpointer      user_data)
+{
+	PoolJob *job_a = (PoolJob *) a;
+	PoolJob *job_b = (PoolJob *) b;
+
+	if (job_a->priority < job_b->priority) {
+		return -1;
+	} else if (job_a->priority > job_b->priority) {
+		return 1;
+	} else {
+		return 0;
+	}
+}
+
 static void
 interface_pool_dispatch_cb (gpointer data,
                             gpointer user_data)
@@ -1390,6 +1407,9 @@ tracker_db_interface_pool_init (TrackerDBInterfacePool *pool)
 	priv->interface_pool = g_thread_pool_new (interface_pool_dispatch_cb,
 	                                          NULL, 10,
 	                                          FALSE, NULL);
+	g_thread_pool_set_sort_function (priv->interface_pool,
+	                                 compare_pool_jobs_func,
+	                                 NULL);
 }
 
 TrackerDBInterfacePool *



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]