tpl_result_t
_thread_wl_display_init(tpl_wl_egl_display_t *wl_egl_display)
{
- struct wl_registry *registry = NULL;
- struct wl_event_queue *queue = NULL;
- struct wl_display *display_wrapper = NULL;
+ struct wl_registry *registry = NULL;
+ struct wl_event_queue *queue = NULL;
+ struct wl_display *display_wrapper = NULL;
+ struct wl_proxy *wl_tbm = NULL;
+ struct wayland_tbm_client *wl_tbm_client = NULL;
int ret;
tpl_result_t result = TPL_ERROR_NONE;
wl_proxy_wrapper_destroy(display_wrapper);
display_wrapper = NULL;
+ wl_tbm_client = wayland_tbm_client_init(wl_egl_display->wl_display);
+ if (!wl_tbm_client) {
+ TPL_ERR("Failed to initialize wl_tbm_client.");
+ result = TPL_ERROR_INVALID_CONNECTION;
+ goto fini;
+ }
+
+ wl_tbm = (struct wl_proxy *)wayland_tbm_client_get_wl_tbm(wl_tbm_client);
+ if (!wl_tbm) {
+ TPL_ERR("Failed to get wl_tbm from wl_tbm_client(%p)", wl_tbm_client);
+ result = TPL_ERROR_INVALID_CONNECTION;
+ goto fini;
+ }
+
+ wl_proxy_set_queue(wl_tbm, wl_egl_display->ev_queue);
+ wl_egl_display->wl_tbm_client = wl_tbm_client;
+
if (wl_registry_add_listener(registry, ®istry_listener,
wl_egl_display)) {
TPL_ERR("Failed to wl_registry_add_listener");
wl_egl_display->wl_initialized = TPL_TRUE;
TPL_INFO("[WAYLAND_INIT]",
- "wl_egl_display(%p) wl_display(%p) event_queue(%p)",
- wl_egl_display, wl_egl_display->wl_display, wl_egl_display->ev_queue);
+ "wl_egl_display(%p) wl_display(%p) wl_tbm_client(%p) event_queue(%p)",
+ wl_egl_display, wl_egl_display->wl_display,
+ wl_egl_display->wl_tbm_client, wl_egl_display->ev_queue);
TPL_INFO("[WAYLAND_INIT]",
"tizen_surface_shm(%p) wp_presentation(%p) explicit_sync(%p)",
wl_egl_display->tss, wl_egl_display->presentation,
wl_egl_display->explicit_sync = NULL;
}
+ if (wl_egl_display->wl_tbm_client) {
+ struct wl_proxy *wl_tbm = NULL;
+
+ wl_tbm = (struct wl_proxy *)wayland_tbm_client_get_wl_tbm(
+ wl_egl_display->wl_tbm_client);
+ if (wl_tbm) {
+ wl_proxy_set_queue(wl_tbm, NULL);
+ }
+
+ TPL_LOG_T("WL_EGL", "wl_tbm_client deinit wl_tbm_client(%p)",
+ wl_egl_display->wl_tbm_client);
+ wayland_tbm_client_deinit(wl_egl_display->wl_tbm_client);
+
+ wl_egl_display->wl_tbm_client = NULL;
+ }
+
wl_event_queue_destroy(wl_egl_display->ev_queue);
wl_egl_display->wl_initialized = TPL_FALSE;
wl_egl_display->tss = NULL;
wl_egl_display->presentation = NULL;
wl_egl_display->explicit_sync = NULL;
+ wl_egl_display->wl_tbm_client = NULL;
wl_egl_display->use_wait_vblank = TPL_TRUE; // default enabled
{