summaryrefslogtreecommitdiffstats
path: root/src/egl
diff options
context:
space:
mode:
Diffstat (limited to 'src/egl')
-rw-r--r--src/egl/main/eglsync.c9
1 files changed, 8 insertions, 1 deletions
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: