{
struct wl_registry *registry = NULL;
struct wl_event_queue *queue = NULL;
+ struct wl_display *display_wrapper = NULL;
int ret;
queue = wl_display_create_queue(wayland_egl_display->wl_dpy);
goto fini;
}
- registry = wl_display_get_registry(wayland_egl_display->wl_dpy);
+ display_wrapper = wl_proxy_create_wrapper(wayland_egl_display->wl_dpy);
+ if (!display_wrapper) {
+ TPL_ERR("Failed to create a proxy wrapper of wl_display");
+ goto fini;
+ }
+
+ wl_proxy_set_queue((struct wl_proxy *)display_wrapper, queue);
+
+ registry = wl_display_get_registry(display_wrapper);
if (!registry) {
TPL_ERR("Failed to create wl_registry");
goto fini;
}
- wl_proxy_set_queue((struct wl_proxy *)registry, queue);
+ wl_proxy_wrapper_destroy(display_wrapper);
+ display_wrapper = NULL;
+
if (wl_registry_add_listener(registry, ®istry_listener,
wayland_egl_display)) {
TPL_ERR("Failed to wl_registry_add_listener");
fini:
if (queue)
wl_event_queue_destroy(queue);
+ if (display_wrapper)
+ wl_proxy_wrapper_destroy(display_wrapper);
if (registry)
wl_registry_destroy(registry);
}