wayland_tbm_client_deinit(wl_tbm_client);
}
+#define IMPL_TIZEN_SURFACE_SHM_VERSION 2
+
void
__cb_wl_resistry_global_callback(void *data, struct wl_registry *wl_registry,
uint32_t name, const char *interface,
disp_source->tss = wl_registry_bind(wl_registry,
name,
&tizen_surface_shm_interface,
- version);
+ ((version < IMPL_TIZEN_SURFACE_SHM_VERSION) ?
+ version : IMPL_TIZEN_SURFACE_SHM_VERSION));
}
}
_twe_display_print_err(disp_source, "dispatch_queue_pending");
return;
}
- TPL_OBJECT_UNLOCK(&disp_source->obj);
tbm_surface_queue_flush(surf_source->tbm_queue);
}
TPL_OBJECT_UNLOCK(&surf_source->obj);
}
+
+ TPL_OBJECT_UNLOCK(&disp_source->obj);
}
+static void __cb_tss_flusher_free_flush_callback(void *data,
+ struct tizen_surface_shm_flusher *tss_flusher)
+{
+ twe_wl_surf_source *surf_source = (twe_wl_surf_source *)data;
+ twe_wl_disp_source *disp_source = surf_source->disp_source;
+ int ret;
+
+ TPL_LOG_T("WL_EGL", "[FREE_FLUSH_CB] surf_source(%p)", surf_source);
+
+ /* First distach panding queue for TPL
+ - dispatch buffer-release
+ - dispatch queue flush
+ */
+ TPL_OBJECT_LOCK(&disp_source->obj);
+ ret = wl_display_dispatch_queue_pending(disp_source->disp,
+ disp_source->ev_queue);
+ if (ret == -1) {
+ _twe_display_print_err(disp_source, "dispatch_queue_pending");
+ return;
+ }
+
+ tbm_surface_queue_free_flush(surf_source->tbm_queue);
+
+ TPL_OBJECT_UNLOCK(&disp_source->obj);
+}
+
+
static const struct tizen_surface_shm_flusher_listener
tss_flusher_listener = {
- __cb_tss_flusher_flush_callback
+ __cb_tss_flusher_flush_callback,
+ __cb_tss_flusher_free_flush_callback
};
void