From 2dedc1fe5d55dafe9254e104b58bac1ab342003b Mon Sep 17 00:00:00 2001 From: Joonbum Ko Date: Mon, 20 Apr 2020 16:41:59 +0900 Subject: [PATCH] Protected the access of surf_source's event_fd with surf_mutex. Change-Id: Icd081e7adf27c047e64b3f6bfabb06c1b85e6906 Signed-off-by: Joonbum Ko --- src/tpl_wayland_egl_thread.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/tpl_wayland_egl_thread.c b/src/tpl_wayland_egl_thread.c index ea58f4c..121a1da 100755 --- a/src/tpl_wayland_egl_thread.c +++ b/src/tpl_wayland_egl_thread.c @@ -1719,14 +1719,19 @@ __cb_tbm_queue_acquirable_callback(tbm_surface_queue_h surface_queue, uint64_t value = 1; int ret; + g_mutex_lock(&surf_source->surf_mutex); + if (!surf_source->use_sync_fence) { ret = write(surf_source->event_fd, &value, sizeof(uint64_t)); if (ret == -1) { TPL_ERR("failed to send acquirable event. twe_wl_surf_source(%p)", surf_source); + g_mutex_unlock(&surf_source->surf_mutex); return; } } + + g_mutex_unlock(&surf_source->surf_mutex); } static void __cb_tbm_queue_trace_callback(tbm_surface_queue_h tbm_queue, @@ -2323,6 +2328,8 @@ _twe_thread_wl_surface_dispatch(GSource *source, GSourceFunc cb, gpointer data) twe_wl_surf_source *surf_source = (twe_wl_surf_source *)source; GIOCondition cond; + g_mutex_lock(&surf_source->surf_mutex); + cond = g_source_query_unix_fd(source, surf_source->tag); if (cond & G_IO_IN) { @@ -2342,6 +2349,8 @@ _twe_thread_wl_surface_dispatch(GSource *source, GSourceFunc cb, gpointer data) TPL_ASSERT((cond & G_IO_IN)); } + g_mutex_unlock(&surf_source->surf_mutex); + return G_SOURCE_CONTINUE; } -- 2.7.4