summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVasiliy Ulyanov <v.ulyanov@samsung.com>2017-04-26 14:59:27 +0300
committerJinhyung Jo <jinhyung.jo@samsung.com>2017-04-28 15:31:42 +0900
commitd42c823b475eb407d99cb03d2b1be4f1573c23ca (patch)
tree7258bf4a95d98a439f639affa7e2f091cf4b19a0
parent5f9e42c9ecf8ca21bde4804607de669cc5c8ed3d (diff)
downloademulator-yagl-accepted/tizen/3.0/ivi/20170510.222413.tar.gz
emulator-yagl-accepted/tizen/3.0/ivi/20170510.222413.tar.bz2
emulator-yagl-accepted/tizen/3.0/ivi/20170510.222413.zip
This is needed in order to be able to create fences in transport layer and avoid race conditions when invoking yagl_host_* routines with return values. Previously fence_dpy was assigned only in eglGetDisplay. Though the app may make EGL calls from auxiliary threads which will have fence_dpy uninitialized. Change-Id: Ibe66030cb4a30d189750d1ab233164cfea60b339 Signed-off-by: Vasiliy Ulyanov <v.ulyanov@samsung.com>
-rw-r--r--EGL/yagl_display.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/EGL/yagl_display.c b/EGL/yagl_display.c
index 60b8d02..1433c8a 100644
--- a/EGL/yagl_display.c
+++ b/EGL/yagl_display.c
@@ -131,6 +131,20 @@ struct yagl_display *yagl_display_get(EGLDisplay handle)
if (dpy->host_dpy == host_dpy) {
pthread_mutex_unlock(&g_displays_mutex);
+ /*
+ * We need to make sure fence_dpy is setup properly for current
+ * thread state. Otherwise we may not be able to create fences in
+ * transport layer and eventually will face a race condition between
+ * host and target.
+ *
+ * E.g. the app may initialize all EGL stuff (i.e. get display,
+ * choose config, etc.) and save it to some global state var. If
+ * then it tries to create new context in some other thread,
+ * fence_dpy will be NULL and as a result we may not get proper
+ * values returned from the host.
+ */
+ yagl_set_fence_display(dpy);
+
return dpy;
}
}