From: Marek Olšák Date: Fri, 10 Apr 2015 21:35:39 +0000 (+0200) Subject: egl/dri2: return the latest sync status in eglGetSyncAttribKHR X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=a2557b30d843d4f3dada6a022f27e8343adabca8;p=mesa.git egl/dri2: return the latest sync status in eglGetSyncAttribKHR --- diff --git a/src/egl/main/eglsync.c b/src/egl/main/eglsync.c index 3b4a88902fd..8b8ab16b0d2 100644 --- a/src/egl/main/eglsync.c +++ b/src/egl/main/eglsync.c @@ -30,6 +30,7 @@ #include "eglsync.h" #include "eglcurrent.h" +#include "egldriver.h" #include "egllog.h" @@ -144,13 +145,19 @@ _eglGetSyncAttribKHR(_EGLDriver *drv, _EGLDisplay *dpy, _EGLSync *sync, EGLint attribute, EGLint *value) { if (!value) - return _eglError(EGL_BAD_PARAMETER, "eglGetConfigs"); + return _eglError(EGL_BAD_PARAMETER, "eglGetSyncAttribKHR"); switch (attribute) { case EGL_SYNC_TYPE_KHR: *value = sync->Type; break; case EGL_SYNC_STATUS_KHR: + /* update the sync status */ + if (sync->SyncStatus != EGL_SIGNALED_KHR && + (sync->Type == EGL_SYNC_FENCE_KHR || + sync->Type == EGL_SYNC_CL_EVENT_KHR)) + drv->API.ClientWaitSyncKHR(drv, dpy, sync, 0, 0); + *value = sync->SyncStatus; break; case EGL_SYNC_CONDITION_KHR: