GMainLoop *vk_sub_loop;
GMutex sub_thread_mutex;
GCond sub_thread_cond;
+ int draw_done_count;
};
struct _twe_wl_buffer_info {
TPL_ERR("Failed to read from event_fd(%d)",
surf_source->event_fd);
+ if (surf_source->disp_source->is_vulkan_dpy) {
+ g_mutex_lock(&surf_source->sub_thread_mutex);
+ while (surf_source->draw_done_count > 0) {
+ _twe_thread_wl_surface_acquire_and_commit(surf_source);
+ surf_source->draw_done_count--;
+ }
+ g_mutex_unlock(&surf_source->sub_thread_mutex);
+ }
_twe_thread_wl_surface_acquire_and_commit(surf_source);
}
source->vk_sub_loop = NULL;
source->vk_sub_thread = NULL;
+ source->draw_done_count = 0;
__tpl_object_init(&source->obj, TPL_OBJECT_SURFACE, NULL);
int ret;
uint64_t value = 1;
tbm_surface_h tbm_surface = sync_draw_source->tbm_surface;
+ twe_wl_surf_source *surf_source = sync_draw_source->buf_info->surf_source;
tbm_surface_internal_ref(tbm_surface);
sync_draw_source->draw_fence_fd, errno, buf);
}
+ g_mutex_lock(&surf_source->sub_thread_mutex);
+ surf_source->draw_done_count++;
+ g_mutex_unlock(&surf_source->sub_thread_mutex);
+
/* Draw done */
/* Send event to twe_wl_surf_source */
ret = write(sync_draw_source->draw_done_signal_fd,