diff options
-rw-r--r-- | EGL/yagl_display.c | 14 |
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; } } |