wayland-tbm-client: use display_wrapper to ensure that proxy has a queue 86/114386/1
authorBoram Park <boram1288.park@samsung.com>
Mon, 13 Feb 2017 07:51:14 +0000 (16:51 +0900)
committerBoram Park <boram1288.park@samsung.com>
Mon, 13 Feb 2017 07:51:14 +0000 (16:51 +0900)
Change-Id: I790074adfec545ad0b218b47271b9fef747f9889

src/wayland-tbm-client.c

index 61650c3..a8123e7 100644 (file)
@@ -373,6 +373,7 @@ wayland_tbm_client_init(struct wl_display *display)
 {
        WL_TBM_RETURN_VAL_IF_FAIL(display != NULL, NULL);
 
+       struct wl_display *display_wrapper;
        struct wayland_tbm_client *tbm_client;
        struct wl_event_queue *wl_queue;
        struct wl_registry *wl_registry;
@@ -386,15 +387,25 @@ wayland_tbm_client_init(struct wl_display *display)
 
        tbm_client->dpy = display;
 
+       display_wrapper = wl_proxy_create_wrapper(display);
+       if (!display_wrapper) {
+               WL_TBM_LOG("Failed to create display_wrapper.\n");
+               free(tbm_client);
+               return NULL;
+       }
+
        wl_queue = wl_display_create_queue(display);
        if (!wl_queue) {
                WL_TBM_LOG("Failed to create queue.\n");
-
+               wl_proxy_wrapper_destroy(display_wrapper);
                free(tbm_client);
                return NULL;
        }
 
-       wl_registry = wl_display_get_registry(display);
+       wl_proxy_set_queue((struct wl_proxy *)display_wrapper, wl_queue);
+
+       wl_registry = wl_display_get_registry(display_wrapper);
+       wl_proxy_wrapper_destroy(display_wrapper);
        if (!wl_registry) {
                WL_TBM_LOG("Failed to get registry\n");
 
@@ -403,8 +414,6 @@ wayland_tbm_client_init(struct wl_display *display)
                return NULL;
        }
 
-       wl_proxy_set_queue((struct wl_proxy *)wl_registry, wl_queue);
-
        wl_registry_add_listener(wl_registry, &registry_listener, tbm_client);
        if (wl_display_roundtrip_queue(display, wl_queue) < 0) {
                WL_TBM_LOG("Failed to wl_display_roundtrip_queuey\n");