ilmControl: sync_and_acquire_instance checks for initialization
authorMarcus Fritzsch <marcus.fritzsch@xse.de>
Wed, 30 Jul 2014 15:21:21 +0000 (17:21 +0200)
committerNobuhiko Tanibata <NOBUHIKO_TANIBATA@denso.co.jp>
Tue, 12 Aug 2014 13:15:16 +0000 (22:15 +0900)
sync_and_acquire_instance coded as a macro that checks
the initialized field and returns ILM_FAILED if no initilized.

As sync_and_acquire_instance() is only to be used from ilm_*
implementation functions, this should be safe.

Signed-off-by: Marcus Fritzsch <marcus.fritzsch@xse.de>
ivi-layermanagement-api/ilmControl/src/ilm_control_wayland_platform.c

index 951dbab..c89b80e 100644 (file)
@@ -1406,14 +1406,16 @@ init_control(void)
     return 0;
 }
 
-static struct ilm_control_context*
-sync_and_acquire_instance(void)
-{
-    struct ilm_control_context *ctx = &ilm_context;
-    lock_context(ctx);
-    display_roundtrip_queue(ctx->wl.display, ctx->wl.queue);
-    return ctx;
-}
+#define sync_and_acquire_instance() ({ \
+    struct ilm_control_context *ctx = &ilm_context; \
+    if (! ctx->initialized) { \
+        fputs("Not initialized\n", stderr); \
+        return ILM_FAILED; \
+    } \
+    lock_context(ctx); \
+    display_roundtrip_queue(ctx->wl.display, ctx->wl.queue); \
+    ctx; \
+})
 
 static void release_instance(void)
 {