Updating branch refs/heads/master to b2aa6175031905006c86e3ff749728ac811e1553 (commit) from 107f638da92c8da10b3b34c8fb5ad81e1690c9cd (commit)
commit b2aa6175031905006c86e3ff749728ac811e1553 Author: Philip Van Hoof <phi...@codeminded.be> Date: Tue Oct 6 16:32:21 2009 +0200 LIFO scheduler for interactive thumbnailing Signed-off-by: Jannis Pohlmann <jan...@xfce.org> tumblerd/Makefile.am | 4 +- ...eshold-scheduler.c => tumbler-lifo-scheduler.c} | 238 ++++++++++---------- tumblerd/tumbler-lifo-scheduler.h | 44 ++++ tumblerd/tumbler-scheduler.c | 9 + tumblerd/tumbler-scheduler.h | 3 + tumblerd/tumbler-service.c | 4 +- tumblerd/tumbler-threshold-scheduler.h | 44 ---- 7 files changed, 177 insertions(+), 169 deletions(-) diff --git a/tumblerd/Makefile.am b/tumblerd/Makefile.am index cb09b8d..1813994 100644 --- a/tumblerd/Makefile.am +++ b/tumblerd/Makefile.am @@ -41,8 +41,8 @@ tumblerd_SOURCES = \ tumbler-service.h \ tumbler-specialized-thumbnailer.c \ tumbler-specialized-thumbnailer.h \ - tumbler-threshold-scheduler.c \ - tumbler-threshold-scheduler.h \ + tumbler-lifo-scheduler.c \ + tumbler-lifo-scheduler.h \ tumbler-utils.h \ $(tumblerd_built_sources) diff --git a/tumblerd/tumbler-threshold-scheduler.c b/tumblerd/tumbler-lifo-scheduler.c similarity index 57% rename from tumblerd/tumbler-threshold-scheduler.c rename to tumblerd/tumbler-lifo-scheduler.c index 3cda6cf..832daab 100644 --- a/tumblerd/tumbler-threshold-scheduler.c +++ b/tumblerd/tumbler-lifo-scheduler.c @@ -30,7 +30,7 @@ #include <tumbler/tumbler.h> -#include <tumblerd/tumbler-threshold-scheduler.h> +#include <tumblerd/tumbler-lifo-scheduler.h> #include <tumblerd/tumbler-scheduler.h> @@ -39,56 +39,54 @@ enum { PROP_0, - PROP_THRESHOLD, + PROP_KIND, }; - - -static void tumbler_threshold_scheduler_iface_init (TumblerSchedulerIface *iface); -static void tumbler_threshold_scheduler_finalize (GObject *object); -static void tumbler_threshold_scheduler_get_property (GObject *object, +static void tumbler_lifo_scheduler_iface_init (TumblerSchedulerIface *iface); +static void tumbler_lifo_scheduler_finalize (GObject *object); +static void tumbler_lifo_scheduler_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec); -static void tumbler_threshold_scheduler_set_property (GObject *object, +static void tumbler_lifo_scheduler_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec); -static void tumbler_threshold_scheduler_push (TumblerScheduler *scheduler, +static void tumbler_lifo_scheduler_push (TumblerScheduler *scheduler, TumblerSchedulerRequest *request); -static void tumbler_threshold_scheduler_unqueue (TumblerScheduler *scheduler, +static void tumbler_lifo_scheduler_unqueue (TumblerScheduler *scheduler, guint handle); -static void tumbler_threshold_scheduler_finish_request (TumblerThresholdScheduler *scheduler, +static void tumbler_lifo_scheduler_finish_request (TumblerLifoScheduler *scheduler, TumblerSchedulerRequest *request); -static void tumbler_threshold_scheduler_unqueue_request (TumblerSchedulerRequest *request, +static void tumbler_lifo_scheduler_unqueue_request (TumblerSchedulerRequest *request, gpointer user_data); -static void tumbler_threshold_scheduler_thread (gpointer data, +static void tumbler_lifo_scheduler_thread (gpointer data, gpointer user_data); -static void tumbler_threshold_scheduler_thumbnailer_error (TumblerThumbnailer *thumbnailer, +static void tumbler_lifo_scheduler_thumbnailer_error (TumblerThumbnailer *thumbnailer, const gchar *failed_uri, gint error_code, const gchar *message, TumblerSchedulerRequest *request); -static void tumbler_threshold_scheduler_thumbnailer_ready (TumblerThumbnailer *thumbnailer, +static void tumbler_lifo_scheduler_thumbnailer_ready (TumblerThumbnailer *thumbnailer, const gchar *uri, TumblerSchedulerRequest *request); -struct _TumblerThresholdSchedulerClass +struct _TumblerLifoSchedulerClass { GObjectClass __parent__; }; -struct _TumblerThresholdScheduler +struct _TumblerLifoScheduler { GObject __parent__; - GThreadPool *large_pool; - GThreadPool *small_pool; + GThreadPool *pool; GMutex *mutex; GList *requests; - guint threshold; + guint lifo; + gchar *kind; }; @@ -97,78 +95,75 @@ G_LOCK_DEFINE (plugin_access_lock); -G_DEFINE_TYPE_WITH_CODE (TumblerThresholdScheduler, - tumbler_threshold_scheduler, +G_DEFINE_TYPE_WITH_CODE (TumblerLifoScheduler, + tumbler_lifo_scheduler, G_TYPE_OBJECT, G_IMPLEMENT_INTERFACE (TUMBLER_TYPE_SCHEDULER, - tumbler_threshold_scheduler_iface_init)); + tumbler_lifo_scheduler_iface_init)); static void -tumbler_threshold_scheduler_class_init (TumblerThresholdSchedulerClass *klass) +tumbler_lifo_scheduler_class_init (TumblerLifoSchedulerClass *klass) { GObjectClass *gobject_class; gobject_class = G_OBJECT_CLASS (klass); - gobject_class->finalize = tumbler_threshold_scheduler_finalize; - gobject_class->get_property = tumbler_threshold_scheduler_get_property; - gobject_class->set_property = tumbler_threshold_scheduler_set_property; + gobject_class->finalize = tumbler_lifo_scheduler_finalize; + gobject_class->get_property = tumbler_lifo_scheduler_get_property; + gobject_class->set_property = tumbler_lifo_scheduler_set_property; g_object_class_install_property (gobject_class, - PROP_THRESHOLD, - g_param_spec_uint ("threshold", - "threshold", - "threshold", - 0, G_MAXUINT, 20, - G_PARAM_READWRITE)); - + PROP_KIND, + g_param_spec_string ("kind", + "kind", + "kind", + NULL, + G_PARAM_CONSTRUCT_ONLY | + G_PARAM_READWRITE)); } - +static const gchar* +tumbler_lifo_scheduler_get_kind (TumblerScheduler *scheduler) +{ + TumblerLifoScheduler *s = TUMBLER_LIFO_SCHEDULER (scheduler); + return s->kind; +} static void -tumbler_threshold_scheduler_iface_init (TumblerSchedulerIface *iface) +tumbler_lifo_scheduler_iface_init (TumblerSchedulerIface *iface) { - iface->push = tumbler_threshold_scheduler_push; - iface->unqueue = tumbler_threshold_scheduler_unqueue; + iface->push = tumbler_lifo_scheduler_push; + iface->unqueue = tumbler_lifo_scheduler_unqueue; + iface->get_kind = tumbler_lifo_scheduler_get_kind; } static void -tumbler_threshold_scheduler_init (TumblerThresholdScheduler *scheduler) +tumbler_lifo_scheduler_init (TumblerLifoScheduler *scheduler) { scheduler->mutex = g_mutex_new (); scheduler->requests = NULL; - /* allocate a pool with max. 2 threads for request with <= threshold URIs */ - scheduler->small_pool = g_thread_pool_new (tumbler_threshold_scheduler_thread, - scheduler, 2, TRUE, NULL); + /* allocate a pool with max. 2 threads for request with <= lifo URIs */ + scheduler->pool = g_thread_pool_new (tumbler_lifo_scheduler_thread, + scheduler, 1, TRUE, NULL); /* make the thread a LIFO */ - g_thread_pool_set_sort_function (scheduler->small_pool, - tumbler_scheduler_request_compare, NULL); - - /* allocate a pool with max. 2 threads for request with > threshold URIs */ - scheduler->large_pool = g_thread_pool_new (tumbler_threshold_scheduler_thread, - scheduler, 2, TRUE, NULL); - - /* make the thread a LIFO */ - g_thread_pool_set_sort_function (scheduler->small_pool, + g_thread_pool_set_sort_function (scheduler->pool, tumbler_scheduler_request_compare, NULL); } static void -tumbler_threshold_scheduler_finalize (GObject *object) +tumbler_lifo_scheduler_finalize (GObject *object) { - TumblerThresholdScheduler *scheduler = TUMBLER_THRESHOLD_SCHEDULER (object); + TumblerLifoScheduler *scheduler = TUMBLER_LIFO_SCHEDULER (object); /* destroy both thread pools */ - g_thread_pool_free (scheduler->small_pool, TRUE, TRUE); - g_thread_pool_free (scheduler->large_pool, TRUE, TRUE); + g_thread_pool_free (scheduler->pool, TRUE, TRUE); /* release all pending requests */ g_list_foreach (scheduler->requests, (GFunc) tumbler_scheduler_request_free, NULL); @@ -179,23 +174,23 @@ tumbler_threshold_scheduler_finalize (GObject *object) /* destroy the mutex */ g_mutex_free (scheduler->mutex); - (*G_OBJECT_CLASS (tumbler_threshold_scheduler_parent_class)->finalize) (object); + (*G_OBJECT_CLASS (tumbler_lifo_scheduler_parent_class)->finalize) (object); } static void -tumbler_threshold_scheduler_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec) +tumbler_lifo_scheduler_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) { - TumblerThresholdScheduler *scheduler = TUMBLER_THRESHOLD_SCHEDULER (object); + TumblerLifoScheduler *scheduler = TUMBLER_LIFO_SCHEDULER (object); switch (prop_id) { - case PROP_THRESHOLD: - g_value_set_uint (value, scheduler->threshold); + case PROP_KIND: + g_value_set_string (value, scheduler->kind); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -206,17 +201,17 @@ tumbler_threshold_scheduler_get_property (GObject *object, static void -tumbler_threshold_scheduler_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec) +tumbler_lifo_scheduler_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) { - TumblerThresholdScheduler *scheduler = TUMBLER_THRESHOLD_SCHEDULER (object); + TumblerLifoScheduler *scheduler = TUMBLER_LIFO_SCHEDULER (object); switch (prop_id) { - case PROP_THRESHOLD: - scheduler->threshold = g_value_get_uint (value); + case PROP_KIND: + scheduler->kind = g_value_dup_string (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -227,67 +222,64 @@ tumbler_threshold_scheduler_set_property (GObject *object, static void -tumbler_threshold_scheduler_push (TumblerScheduler *scheduler, - TumblerSchedulerRequest *request) +tumbler_lifo_scheduler_push (TumblerScheduler *scheduler, + TumblerSchedulerRequest *request) { - TumblerThresholdScheduler *threshold_scheduler = - TUMBLER_THRESHOLD_SCHEDULER (scheduler); + TumblerLifoScheduler *lifo_scheduler = + TUMBLER_LIFO_SCHEDULER (scheduler); - g_return_if_fail (TUMBLER_IS_THRESHOLD_SCHEDULER (scheduler)); + g_return_if_fail (TUMBLER_IS_LIFO_SCHEDULER (scheduler)); g_return_if_fail (request != NULL); - g_mutex_lock (threshold_scheduler->mutex); + g_mutex_lock (lifo_scheduler->mutex); /* gain ownership over the requests (sets request->scheduler) */ tumbler_scheduler_take_request (scheduler, request); /* prepend the request to the request list */ - threshold_scheduler->requests = - g_list_prepend (threshold_scheduler->requests, request); + lifo_scheduler->requests = + g_list_prepend (lifo_scheduler->requests, request); - /* enqueue the request in one of the two thread pools depending on its size */ - if (g_strv_length (request->uris) > threshold_scheduler->threshold) - g_thread_pool_push (threshold_scheduler->large_pool, request, NULL); - else - g_thread_pool_push (threshold_scheduler->small_pool, request, NULL); + /* enqueue the request in the pool */ + g_thread_pool_push (lifo_scheduler->pool, request, NULL); - g_mutex_unlock (threshold_scheduler->mutex); + g_mutex_unlock (lifo_scheduler->mutex); } static void -tumbler_threshold_scheduler_unqueue (TumblerScheduler *scheduler, - guint handle) +tumbler_lifo_scheduler_unqueue (TumblerScheduler *scheduler, + guint handle) { - TumblerThresholdScheduler *threshold_scheduler = - TUMBLER_THRESHOLD_SCHEDULER (scheduler); + TumblerLifoScheduler *lifo_scheduler = + TUMBLER_LIFO_SCHEDULER (scheduler); - g_return_if_fail (TUMBLER_IS_THRESHOLD_SCHEDULER (scheduler)); + g_return_if_fail (TUMBLER_IS_LIFO_SCHEDULER (scheduler)); g_return_if_fail (handle != 0); - g_mutex_lock (threshold_scheduler->mutex); + g_mutex_lock (lifo_scheduler->mutex); - g_list_foreach (threshold_scheduler->requests, - (GFunc) tumbler_threshold_scheduler_unqueue_request, + g_list_foreach (lifo_scheduler->requests, + (GFunc) tumbler_lifo_scheduler_unqueue_request, GUINT_TO_POINTER (handle)); - g_mutex_unlock (threshold_scheduler->mutex); + g_mutex_unlock (lifo_scheduler->mutex); } static void -tumbler_threshold_scheduler_finish_request (TumblerThresholdScheduler *scheduler, - TumblerSchedulerRequest *request) +tumbler_lifo_scheduler_finish_request (TumblerLifoScheduler *scheduler, + TumblerSchedulerRequest *request) { - g_return_if_fail (TUMBLER_IS_THRESHOLD_SCHEDULER (scheduler)); + g_return_if_fail (TUMBLER_IS_LIFO_SCHEDULER (scheduler)); g_return_if_fail (request != NULL); g_signal_emit_by_name (scheduler, "finished", request->handle); scheduler->requests = g_list_remove (scheduler->requests, - request); + request); tumbler_scheduler_request_free (request); } @@ -295,8 +287,8 @@ tumbler_threshold_scheduler_finish_request (TumblerThresholdScheduler *scheduler static void -tumbler_threshold_scheduler_unqueue_request (TumblerSchedulerRequest *request, - gpointer user_data) +tumbler_lifo_scheduler_unqueue_request (TumblerSchedulerRequest *request, + gpointer user_data) { guint handle = GPOINTER_TO_UINT (user_data); @@ -310,10 +302,10 @@ tumbler_threshold_scheduler_unqueue_request (TumblerSchedulerRequest *request, static void -tumbler_threshold_scheduler_thread (gpointer data, - gpointer user_data) +tumbler_lifo_scheduler_thread (gpointer data, + gpointer user_data) { - TumblerThresholdScheduler *scheduler = user_data; + TumblerLifoScheduler *scheduler = user_data; TumblerSchedulerRequest *request = data; TumblerFileInfo *info; const gchar **uris; @@ -327,7 +319,7 @@ tumbler_threshold_scheduler_thread (gpointer data, GList *lp; gint n; - g_return_if_fail (TUMBLER_IS_THRESHOLD_SCHEDULER (scheduler)); + g_return_if_fail (TUMBLER_IS_LIFO_SCHEDULER (scheduler)); g_return_if_fail (request != NULL); /* notify others that we're starting to process this request */ @@ -338,7 +330,7 @@ tumbler_threshold_scheduler_thread (gpointer data, if (request->unqueued) { g_mutex_lock (scheduler->mutex); - tumbler_threshold_scheduler_finish_request (scheduler, request); + tumbler_lifo_scheduler_finish_request (scheduler, request); g_mutex_unlock (scheduler->mutex); return; } @@ -350,7 +342,7 @@ tumbler_threshold_scheduler_thread (gpointer data, if (request->unqueued) { g_mutex_lock (scheduler->mutex); - tumbler_threshold_scheduler_finish_request (scheduler, request); + tumbler_lifo_scheduler_finish_request (scheduler, request); g_mutex_unlock (scheduler->mutex); return; } @@ -435,19 +427,23 @@ tumbler_threshold_scheduler_thread (gpointer data, if (request->unqueued) { g_mutex_lock (scheduler->mutex); - tumbler_threshold_scheduler_finish_request (scheduler, request); + tumbler_lifo_scheduler_finish_request (scheduler, request); g_mutex_unlock (scheduler->mutex); return; } + /* We immediately forward error and ready so that clients rapidly know + * when individual thumbnails are ready. It's a LIFO for better inter- + * activity with the clients, so we assume this behaviour to be wanted. */ + /* connect to the error signal of the thumbnailer */ g_signal_connect (request->thumbnailers[n], "error", - G_CALLBACK (tumbler_threshold_scheduler_thumbnailer_error), + G_CALLBACK (tumbler_lifo_scheduler_thumbnailer_error), request); /* connect to the ready signal of the thumbnailer */ g_signal_connect (request->thumbnailers[n], "ready", - G_CALLBACK (tumbler_threshold_scheduler_thumbnailer_ready), + G_CALLBACK (tumbler_lifo_scheduler_thumbnailer_ready), request); /* tell the thumbnailer to generate the thumbnail */ @@ -463,7 +459,7 @@ tumbler_threshold_scheduler_thread (gpointer data, g_mutex_lock (scheduler->mutex); /* notify others that we're finished processing the request */ - tumbler_threshold_scheduler_finish_request (scheduler, request); + tumbler_lifo_scheduler_finish_request (scheduler, request); g_mutex_unlock (scheduler->mutex); } @@ -471,18 +467,18 @@ tumbler_threshold_scheduler_thread (gpointer data, static void -tumbler_threshold_scheduler_thumbnailer_error (TumblerThumbnailer *thumbnailer, - const gchar *failed_uri, - gint error_code, - const gchar *message, - TumblerSchedulerRequest *request) +tumbler_lifo_scheduler_thumbnailer_error (TumblerThumbnailer *thumbnailer, + const gchar *failed_uri, + gint error_code, + const gchar *message, + TumblerSchedulerRequest *request) { const gchar *failed_uris[] = { failed_uri, NULL }; g_return_if_fail (TUMBLER_IS_THUMBNAILER (thumbnailer)); g_return_if_fail (failed_uri != NULL); g_return_if_fail (request != NULL); - g_return_if_fail (TUMBLER_IS_THRESHOLD_SCHEDULER (request->scheduler)); + g_return_if_fail (TUMBLER_IS_LIFO_SCHEDULER (request->scheduler)); /* forward the error signal */ g_signal_emit_by_name (request->scheduler, "error", request->handle, failed_uris, @@ -492,16 +488,16 @@ tumbler_threshold_scheduler_thumbnailer_error (TumblerThumbnailer *thumbnai static void -tumbler_threshold_scheduler_thumbnailer_ready (TumblerThumbnailer *thumbnailer, - const gchar *uri, - TumblerSchedulerRequest *request) +tumbler_lifo_scheduler_thumbnailer_ready (TumblerThumbnailer *thumbnailer, + const gchar *uri, + TumblerSchedulerRequest *request) { const gchar *uris[] = { uri, NULL }; g_return_if_fail (TUMBLER_IS_THUMBNAILER (thumbnailer)); g_return_if_fail (uri != NULL); g_return_if_fail (request != NULL); - g_return_if_fail (TUMBLER_IS_THRESHOLD_SCHEDULER (request->scheduler)); + g_return_if_fail (TUMBLER_IS_LIFO_SCHEDULER (request->scheduler)); /* forward the ready signal */ g_signal_emit_by_name (request->scheduler, "ready", uris); @@ -510,7 +506,7 @@ tumbler_threshold_scheduler_thumbnailer_ready (TumblerThumbnailer *thumbnai TumblerScheduler * -tumbler_threshold_scheduler_new (void) +tumbler_lifo_scheduler_new (const gchar *kind) { - return g_object_new (TUMBLER_TYPE_THRESHOLD_SCHEDULER, NULL); + return g_object_new (TUMBLER_TYPE_LIFO_SCHEDULER, "kind", kind, NULL); } diff --git a/tumblerd/tumbler-lifo-scheduler.h b/tumblerd/tumbler-lifo-scheduler.h new file mode 100644 index 0000000..badf925 --- /dev/null +++ b/tumblerd/tumbler-lifo-scheduler.h @@ -0,0 +1,44 @@ +/* vi:set et ai sw=2 sts=2 ts=2: */ +/*- + * Copyright (c) 2009 Jannis Pohlmann <jan...@xfce.org> + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program; if not, write to the Free + * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef __TUMBLER_LIFO_SCHEDULER_H__ +#define __TUMBLER_LIFO_SCHEDULER_H__ + +#include <tumblerd/tumbler-scheduler.h> + +G_BEGIN_DECLS; + +#define TUMBLER_TYPE_LIFO_SCHEDULER (tumbler_lifo_scheduler_get_type ()) +#define TUMBLER_LIFO_SCHEDULER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TUMBLER_TYPE_LIFO_SCHEDULER, TumblerLifoScheduler)) +#define TUMBLER_LIFO_SCHEDULER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TUMBLER_TYPE_LIFO_SCHEDULER, TumblerLifoSchedulerClass)) +#define TUMBLER_IS_LIFO_SCHEDULER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TUMBLER_TYPE_LIFO_SCHEDULER)) +#define TUMBLER_IS_LIFO_SCHEDULER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TUMBLER_TYPE_LIFO_SCHEDULER) +#define TUMBLER_LIFO_SCHEDULER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TUMBLER_TYPE_LIFO_SCHEDULER, TumblerLifoSchedulerClass)) + +typedef struct _TumblerLifoSchedulerClass TumblerLifoSchedulerClass; +typedef struct _TumblerLifoScheduler TumblerLifoScheduler; + +GType tumbler_lifo_scheduler_get_type (void) G_GNUC_CONST; + +TumblerScheduler *tumbler_lifo_scheduler_new (const gchar *kind) G_GNUC_MALLOC G_GNUC_WARN_UNUSED_RESULT; + +G_END_DECLS; + +#endif /* !__TUMBLER_LIFO_SCHEDULER_H__ */ diff --git a/tumblerd/tumbler-scheduler.c b/tumblerd/tumbler-scheduler.c index 9b4ea7d..08b74c4 100644 --- a/tumblerd/tumbler-scheduler.c +++ b/tumblerd/tumbler-scheduler.c @@ -168,6 +168,15 @@ tumbler_scheduler_take_request (TumblerScheduler *scheduler, } +const gchar* +tumbler_scheduler_get_kind (TumblerScheduler *scheduler) +{ + g_return_if_fail (TUMBLER_IS_SCHEDULER (scheduler)); + g_return_if_fail (TUMBLER_SCHEDULER_GET_IFACE (scheduler)->get_kind != NULL); + + TUMBLER_SCHEDULER_GET_IFACE (scheduler)->get_kind (scheduler); +} + void tumbler_scheduler_emit_uri_error (TumblerScheduler *scheduler, diff --git a/tumblerd/tumbler-scheduler.h b/tumblerd/tumbler-scheduler.h index 6f72a1d..d1614c0 100644 --- a/tumblerd/tumbler-scheduler.h +++ b/tumblerd/tumbler-scheduler.h @@ -57,6 +57,8 @@ struct _TumblerSchedulerIface TumblerSchedulerRequest *request); void (*unqueue) (TumblerScheduler *scheduler, guint handle); + const gchar* + (*get_kind) (TumblerScheduler *scheduler); }; GType tumbler_scheduler_get_type (void) G_GNUC_CONST; @@ -65,6 +67,7 @@ void tumbler_scheduler_push (TumblerSchedul TumblerSchedulerRequest *request); void tumbler_scheduler_unqueue (TumblerScheduler *scheduler, guint handle); +const gchar* tumbler_scheduler_get_kind (TumblerScheduler *scheduler); void tumbler_scheduler_take_request (TumblerScheduler *scheduler, TumblerSchedulerRequest *request); void tumbler_scheduler_emit_uri_error (TumblerScheduler *scheduler, diff --git a/tumblerd/tumbler-service.c b/tumblerd/tumbler-service.c index 794e5d9..25ffc3c 100644 --- a/tumblerd/tumbler-service.c +++ b/tumblerd/tumbler-service.c @@ -36,7 +36,7 @@ #include <tumblerd/tumbler-scheduler.h> #include <tumblerd/tumbler-service.h> #include <tumblerd/tumbler-service-dbus-bindings.h> -#include <tumblerd/tumbler-threshold-scheduler.h> +#include <tumblerd/tumbler-lifo-scheduler.h> #include <tumblerd/tumbler-utils.h> @@ -214,7 +214,7 @@ tumbler_service_constructed (GObject *object) #if 0 service->scheduler = tumbler_naive_scheduler_new (); #else - service->scheduler = tumbler_threshold_scheduler_new (); + service->scheduler = tumbler_lifo_scheduler_new ("foreground"); #endif g_signal_connect (service->scheduler, "error", diff --git a/tumblerd/tumbler-threshold-scheduler.h b/tumblerd/tumbler-threshold-scheduler.h deleted file mode 100644 index 07c4d13..0000000 --- a/tumblerd/tumbler-threshold-scheduler.h +++ /dev/null @@ -1,44 +0,0 @@ -/* vi:set et ai sw=2 sts=2 ts=2: */ -/*- - * Copyright (c) 2009 Jannis Pohlmann <jan...@xfce.org> - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program; if not, write to the Free - * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - */ - -#ifndef __TUMBLER_THRESHOLD_SCHEDULER_H__ -#define __TUMBLER_THRESHOLD_SCHEDULER_H__ - -#include <tumblerd/tumbler-scheduler.h> - -G_BEGIN_DECLS; - -#define TUMBLER_TYPE_THRESHOLD_SCHEDULER (tumbler_threshold_scheduler_get_type ()) -#define TUMBLER_THRESHOLD_SCHEDULER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TUMBLER_TYPE_THRESHOLD_SCHEDULER, TumblerThresholdScheduler)) -#define TUMBLER_THRESHOLD_SCHEDULER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TUMBLER_TYPE_THRESHOLD_SCHEDULER, TumblerThresholdSchedulerClass)) -#define TUMBLER_IS_THRESHOLD_SCHEDULER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TUMBLER_TYPE_THRESHOLD_SCHEDULER)) -#define TUMBLER_IS_THRESHOLD_SCHEDULER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TUMBLER_TYPE_THRESHOLD_SCHEDULER) -#define TUMBLER_THRESHOLD_SCHEDULER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TUMBLER_TYPE_THRESHOLD_SCHEDULER, TumblerThresholdSchedulerClass)) - -typedef struct _TumblerThresholdSchedulerClass TumblerThresholdSchedulerClass; -typedef struct _TumblerThresholdScheduler TumblerThresholdScheduler; - -GType tumbler_threshold_scheduler_get_type (void) G_GNUC_CONST; - -TumblerScheduler *tumbler_threshold_scheduler_new (void) G_GNUC_MALLOC G_GNUC_WARN_UNUSED_RESULT; - -G_END_DECLS; - -#endif /* !__TUMBLER_THRESHOLD_SCHEDULER_H__ */ _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org http://foo-projects.org/mailman/listinfo/xfce4-commits