Fixed a bug occured by fence signaled before enqueue. 82/238882/1
authorJoonbum Ko <joonbum.ko@samsung.com>
Thu, 25 Jun 2020 11:24:13 +0000 (20:24 +0900)
committerJoonbum Ko <joonbum.ko@samsung.com>
Tue, 30 Jun 2020 09:40:22 +0000 (18:40 +0900)
commit102cdd1120029514a6c8c6200f9ed85b470ff367
tree2f73113cc3b0a8b1c4e43bd7c18f65d6799f59e1
parent3f87255dfd96439e86ef6d6d0289d86af4c2e38c
Fixed a bug occured by fence signaled before enqueue.

 Changed g_source_attach from main thread to twe_thread.

 - Fixed problem scenario
 [MT] : main thread
 [TWE] : twe thread
 1. [MT] __tpl_wl_egl_surface_enqueue_buffer (with sync_fd)
 2. [MT] twe_surface_set_sync_fd
 3. [MT] g_source_attach  start<- It takes too long time (abnormal)
  [MT] : blocking wait at g_source_attach()
 4. [TWE] fence wait source dispatch. but there is no acquirable buffer in tbm_queue.
 5. [TWE] fence wait source finalize.
 6. [MT] g_source_attach  done.
 7. [MT] tbm_surface_queue_enqueue. but it will be not commit.
 8. [MT] call can_dequeue_timeout
  -> The release event does not come because
    the previous buffer was not wl_surface_commit.
 9. [MT] 10s later, timeout and force flush occured.

Change-Id: I8e7b57c0f5b78caa333410ef75e5bd8ce50d7173
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
src/tpl_wayland_egl_thread.c