tpl_wayland_egl: set need_to_release flag before commit 66/212666/2
authorChangyeon Lee <cyeon.lee@samsung.com>
Mon, 26 Aug 2019 02:48:59 +0000 (11:48 +0900)
committerJoonbum Ko <joonbum.ko@samsung.com>
Fri, 8 Nov 2019 02:05:27 +0000 (02:05 +0000)
it is possible that get release event before need_to_rlease flag is set

Change-Id: I2010350256cbaa90eaa9f506acd1748f1bd247b6

src/tpl_wayland_egl.c
src/tpl_wayland_egl_thread.c

index 54f9402..70e37a5 100644 (file)
@@ -929,10 +929,11 @@ __tpl_wayland_egl_surface_commit(tpl_surface_t *surface,
        wayland_tbm_client_set_buffer_serial(wayland_egl_display->wl_tbm_client,
                                                (void *)wayland_egl_buffer->wl_proxy,
                                                wayland_egl_buffer->serial);
-       wl_surface_commit(wl_egl_window->surface);
 
        wayland_egl_buffer->need_to_release = TPL_TRUE;
 
+       wl_surface_commit(wl_egl_window->surface);
+
        wl_display_flush(wayland_egl_display->wl_dpy);
 
        TPL_LOG_B("WL_EGL",
index f3c361f..1c5d5bf 100644 (file)
@@ -1810,6 +1810,10 @@ _twe_thread_wl_vk_surface_commit(twe_wl_surf_source *surf_source,
                        }
                }
        }
+
+       /* Dependent on wl_buffer release event. */
+       buf_info->need_to_release = TPL_TRUE;
+
        wl_surface_commit(wl_surface);
 
        TRACE_MARK("[COMMIT] BO(%d)",
@@ -1847,10 +1851,6 @@ _twe_thread_wl_vk_surface_commit(twe_wl_surf_source *surf_source,
                        TPL_ERR("Failed to release tbm_surface(%p) when vk_surface_commit.",
                                        tbm_surface);
        }
-
-       /* Dependent on wl_buffer release event. */
-       buf_info->need_to_release = TPL_TRUE;
-
 }
 
 static void
@@ -1928,13 +1928,15 @@ _twe_thread_wl_surface_commit(twe_wl_surf_source *surf_source,
        wayland_tbm_client_set_buffer_serial(disp_source->wl_tbm_client,
                                                (void *)buf_info->wl_buffer,
                                                buf_info->serial);
+
+       buf_info->need_to_release = TPL_TRUE;
+
        wl_surface_commit(wl_surface);
 
        TRACE_ASYNC_BEGIN((int)tbm_surface, "[COMMIT ~ RELEASE] BO(%d)",
                                          tbm_bo_export(tbm_surface_internal_get_bo(tbm_surface, 0)));
 
        buf_info->need_to_commit = TPL_FALSE;
-       buf_info->need_to_release = TPL_TRUE;
 
        TPL_LOG_T(BACKEND, "[COMMIT] wl_buffer(%p) tbm_surface(%p) bo(%d)",
                          buf_info->wl_buffer, tbm_surface,