Fixed a bug related to commit sync. 63/236263/2
authorJoonbum Ko <joonbum.ko@samsung.com>
Tue, 16 Jun 2020 03:55:40 +0000 (12:55 +0900)
committerSooChan Lim <sc1.lim@samsung.com>
Tue, 16 Jun 2020 04:59:01 +0000 (04:59 +0000)
Change-Id: Ie104256039adcf193cd845b3727643fb97eae1f5
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
src/tpl_wayland_egl_thread.c

index 8012edc..56afe25 100755 (executable)
@@ -175,6 +175,8 @@ struct _twe_wl_buffer_info {
        tbm_fd sync_fd;
        tpl_bool_t is_vk_image;
 
+       unsigned int commit_sync_ts_backup;
+
        tbm_surface_h tbm_surface;
 
        twe_wl_surf_source *surf_source;
@@ -1317,7 +1319,7 @@ __cb_create_commit_sync_fd(struct wl_egl_window *wl_egl_window, void *private)
                                                                                           name,
                                                                                           surf_source->commit_sync_timestamp + 1);
                TPL_DEBUG("[COMMIT_SYNC] surf_source(%p) timeline(%d) timestamp(%d) name(%s) sync_fence(%d)",
-                                 surf_source, surf_source->commit_sync_timeline, surf_source->commit_sync_timestamp,
+                                 surf_source, surf_source->commit_sync_timeline, surf_source->commit_sync_timestamp + 1,
                                  name, commit_sync_fd);
 
                TRACE_ASYNC_BEGIN(surf_source->commit_sync_timestamp + 1, "[SYNC_FENCE]");
@@ -1584,6 +1586,8 @@ _twe_surface_set_wl_buffer_info(twe_wl_surf_source *surf_source,
                buf_info->need_to_commit = TPL_TRUE;
                buf_info->sync_fd = -1;
 
+               buf_info->commit_sync_ts_backup = ++surf_source->commit_sync_timestamp;
+
                if (surf_source->in_use_buffers) {
                        g_mutex_lock(&surf_source->surf_mutex);
                        __tpl_list_push_back(surf_source->in_use_buffers,
@@ -1668,6 +1672,7 @@ _twe_surface_set_wl_buffer_info(twe_wl_surf_source *surf_source,
        buf_info->sync_fd = -1;
        buf_info->sync_timeline = -1;
        buf_info->is_vk_image = surf_source->disp_source->is_vulkan_dpy;
+       buf_info->commit_sync_ts_backup = ++surf_source->commit_sync_timestamp;
 
        if (buf_info->is_vk_image) {
                buf_info->sync_timeline = tbm_sync_timeline_create();
@@ -2247,11 +2252,10 @@ _twe_thread_wl_surface_commit(twe_wl_surf_source *surf_source,
        }
 
        if (surf_source->commit_sync_timeline != -1) {
-               surf_source->commit_sync_timestamp++;
-               TRACE_ASYNC_END(surf_source->commit_sync_timestamp, "[SYNC_FENCE]");
+               TRACE_ASYNC_END(buf_info->commit_sync_ts_backup, "[SYNC_FENCE]");
 
                TPL_DEBUG("[COMMIT_SYNC][INC] surf_source(%p) timeline(%d) timestamp(%d)",
-                                 surf_source, surf_source->commit_sync_timeline, surf_source->commit_sync_timestamp);
+                                 surf_source, surf_source->commit_sync_timeline, buf_info->commit_sync_ts_backup);
                if (!tbm_sync_timeline_inc(surf_source->commit_sync_timeline, 1)) {
                        TPL_ERR("Failed to increase timeline(%d)", surf_source->commit_sync_timeline);
                }