diff options
author | Jannis Pohlmann <jannis@xfce.org> | 2010-01-07 10:05:25 +0100 |
---|---|---|
committer | Jannis Pohlmann <jannis@xfce.org> | 2010-01-07 10:09:42 +0100 |
commit | e461ed713aee38e8e62fd66e0f8db71384a27eaf (patch) | |
tree | 9d0f3bb677c719f3e482a1e8b04a920cf66f9299 /tumblerd/tumbler-service.c | |
parent | 549c7b3bc44d2d67a94776bb49ce21a61d1aed28 (diff) | |
download | tumbler-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.c | 32 |
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); |