summaryrefslogtreecommitdiff
path: root/tumblerd/tumbler-service.c
diff options
context:
space:
mode:
authorJannis Pohlmann <jannis@xfce.org>2010-01-07 10:05:25 +0100
committerJannis Pohlmann <jannis@xfce.org>2010-01-07 10:09:42 +0100
commite461ed713aee38e8e62fd66e0f8db71384a27eaf (patch)
tree9d0f3bb677c719f3e482a1e8b04a920cf66f9299 /tumblerd/tumbler-service.c
parent549c7b3bc44d2d67a94776bb49ce21a61d1aed28 (diff)
downloadtumbler-e461ed713aee38e8e62fd66e0f8db71384a27eaf.tar.gz
Report unsupported flavors back to clients via an error signal.
Thanks to Philip for the original commit.
Diffstat (limited to 'tumblerd/tumbler-service.c')
-rw-r--r--tumblerd/tumbler-service.c32
1 files changed, 27 insertions, 5 deletions
diff --git a/tumblerd/tumbler-service.c b/tumblerd/tumbler-service.c
index a3fc687..32b12a7 100644
--- a/tumblerd/tumbler-service.c
+++ b/tumblerd/tumbler-service.c
@@ -647,9 +647,7 @@ tumbler_service_queue (TumblerService *service,
flavor = tumbler_cache_get_flavor (cache, flavor_name);
g_object_unref (cache);
- /* TODO we need to check if the flavor is supported first and otherwise
- * emit an error signal */
- g_assert (cache);
+ g_assert (TUMBLER_IS_CACHE (cache));
infos = tumbler_file_info_array_new_with_flavor (uris, mime_hints, flavor,
&length);
@@ -693,8 +691,32 @@ tumbler_service_queue (TumblerService *service,
if (scheduler == NULL)
scheduler = TUMBLER_SCHEDULER (service->schedulers->data);
- /* let the scheduler take it from here */
- tumbler_scheduler_push (scheduler, scheduler_request);
+ /* report unsupported flavors back to the client */
+ if (flavor == NULL)
+ {
+ /* fake a started signal */
+ tumbler_service_scheduler_started (scheduler, handle, scheduler_request->origin,
+ service);
+
+ /* emit an error signal */
+ tumbler_service_scheduler_error (scheduler, handle, uris,
+ TUMBLER_ERROR_UNSUPPORTED_FLAVOR,
+ _("Unsupported thumbnail flavor requested"),
+ scheduler_request->origin,
+ service);
+
+ /* fake a finished signal */
+ tumbler_service_scheduler_finished (scheduler, handle, scheduler_request->origin,
+ service);
+
+ /* release the request */
+ tumbler_scheduler_request_free (scheduler_request);
+ }
+ else
+ {
+ /* let the scheduler take it from here */
+ tumbler_scheduler_push (scheduler, scheduler_request);
+ }
/* free the thumbnailer array */
tumbler_thumbnailer_array_free (thumbnailers, length);