tpl_bool_t prerotation_capability;
tpl_bool_t vblank_done;
tpl_bool_t vblank_enable;
- tpl_bool_t set_serial_is_used;
+ tpl_bool_t serial_updated;
tpl_bool_t initialized_in_thread;
tpl_bool_t frontbuffer_activated;
tpl_bool_t buffers_finalize_done;
/* for wayland_tbm_client_set_buffer_serial */
unsigned int serial;
+ tpl_bool_t serial_updated;
/* for checking need_to_commit (frontbuffer mode) */
tpl_bool_t need_to_commit;
return;
}
- wl_egl_surface->set_serial_is_used = TPL_TRUE;
wl_egl_surface->serial = serial;
+ wl_egl_surface->serial_updated = TPL_TRUE;
}
static int
wl_egl_surface->need_to_enqueue = TPL_TRUE;
wl_egl_surface->prerotation_capability = TPL_FALSE;
wl_egl_surface->vblank_done = TPL_TRUE;
- wl_egl_surface->set_serial_is_used = TPL_FALSE;
+ wl_egl_surface->serial_updated = TPL_FALSE;
wl_egl_surface->gsource_finalized = TPL_FALSE;
wl_egl_surface->initialized_in_thread = TPL_FALSE;
wl_egl_surface->frontbuffer_activated = TPL_FALSE;
wl_egl_buffer->buffer_release = NULL;
#endif
wl_egl_buffer->transform = tizen_private->transform;
+ wl_egl_buffer->serial_updated = TPL_FALSE;
if (wl_egl_buffer->w_transform != tizen_private->window_transform) {
wl_egl_buffer->w_transform = tizen_private->window_transform;
wl_egl_buffer->w_rotated = TPL_TRUE;
}
- if (wl_egl_surface->set_serial_is_used) {
- wl_egl_buffer->serial = wl_egl_surface->serial;
- } else {
- wl_egl_buffer->serial = ++tizen_private->serial;
- }
-
if (wl_egl_buffer->rects) {
free(wl_egl_buffer->rects);
wl_egl_buffer->rects = NULL;
wl_egl_buffer->acquire_fence_fd = acquire_fence;
+ if (wl_egl_surface->serial_updated) {
+ wl_egl_buffer->serial = wl_egl_surface->serial;
+ wl_egl_buffer->serial_updated = TPL_TRUE;
+ wl_egl_surface->serial_updated = TPL_FALSE;
+ }
+
tpl_gmutex_lock(&wl_egl_surface->presentation_sync.mutex);
if (wl_egl_surface->presentation_sync.fd != -1) {
wl_egl_buffer->presentation_sync_fd = wl_egl_surface->presentation_sync.fd;
}
}
- wayland_tbm_client_set_buffer_serial(wl_egl_display->wl_tbm_client,
- (void *)wl_egl_buffer->wl_buffer,
- wl_egl_buffer->serial);
+ if (wl_egl_buffer->serial_updated) {
+ wayland_tbm_client_set_buffer_serial(wl_egl_display->wl_tbm_client,
+ (void *)wl_egl_buffer->wl_buffer,
+ wl_egl_buffer->serial);
+ wl_egl_buffer->serial_updated = TPL_FALSE;
+ TPL_INFO("[SERIAL]", "wl_egl_surface(%p) bo_name(%d) serial(%u)",
+ wl_egl_surface, wl_egl_buffer->bo_name, wl_egl_buffer->serial);
+ }
+
#if TIZEN_FEATURE_ENABLE
if (wl_egl_display->use_explicit_sync &&
wl_egl_buffer->acquire_fence_fd != -1) {