* presentation feedback from display server */
int32_t presentation_sync_fd;
+ struct pre_commit_cb pre_commit_cb;
+
tpl_gsource *waiting_source;
tpl_gmutex mutex;
wl_egl_buffer->rects = NULL;
wl_egl_buffer->num_rects = 0;
}
+
+ wl_egl_buffer->pre_commit_cb.func = NULL;
+ wl_egl_buffer->pre_commit_cb.data = NULL;
}
static tpl_wl_egl_buffer_t *
tpl_wl_egl_buffer_t *wl_egl_buffer = NULL;
tbm_surface_queue_error_e tsq_err = TBM_SURFACE_QUEUE_ERROR_NONE;
int bo_name = -1;
+ struct tizen_private *tizen_private = wl_egl_tizen_get_tizen_private(wl_egl_surface->wl_egl_window);
if (!tbm_surface_internal_is_valid(tbm_surface)) {
TPL_ERR("Failed to enqueue tbm_surface(%p) Invalid value.",
wl_egl_surface->serial_updated = TPL_FALSE;
}
+ if (tizen_private && tizen_private->pre_commit_cb.func) {
+ wl_egl_buffer->pre_commit_cb.func = tizen_private->pre_commit_cb.func;
+ wl_egl_buffer->pre_commit_cb.data = tizen_private->pre_commit_cb.data;
+
+ if (tizen_private->pre_commit_cb.option == ONCE) {
+ tizen_private->pre_commit_cb.func = NULL;
+ tizen_private->pre_commit_cb.data = NULL;
+ }
+ }
+
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;
wl_egl_window->attached_height = wl_egl_buffer->height;
}
+ if (wl_egl_buffer->pre_commit_cb.func) {
+ TPL_INFO("[CALL_PRE_COMMIT_CB]", "wl_egl_window(%p) func(%p) data(%p)",
+ wl_egl_window, wl_egl_buffer->pre_commit_cb.func,
+ wl_egl_buffer->pre_commit_cb.data);
+
+ wl_egl_buffer->pre_commit_cb.func(wl_egl_buffer->pre_commit_cb.data);
+
+ wl_egl_buffer->pre_commit_cb.func = NULL;
+ wl_egl_buffer->pre_commit_cb.data = NULL;
+ }
+
wl_surface_attach(wl_surface, (void *)wl_egl_buffer->wl_buffer,
wl_egl_buffer->dx, wl_egl_buffer->dy);
wl_egl_buffer->num_rects = 0;
}
+ if (wl_egl_buffer->pre_commit_cb.func) {
+ wl_egl_buffer->pre_commit_cb.func = NULL;
+ wl_egl_buffer->pre_commit_cb.data = NULL;
+ }
+
wl_egl_buffer->wl_egl_surface = NULL;
wl_egl_buffer->tbm_surface = NULL;
wl_egl_buffer->bo_name = -1;