summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/egl/drivers/dri2/egl_dri2.c47
1 files changed, 12 insertions, 35 deletions
diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c
index 3e3d1c8d03d..ac5ecbbf3fd 100644
--- a/src/egl/drivers/dri2/egl_dri2.c
+++ b/src/egl/drivers/dri2/egl_dri2.c
@@ -2666,19 +2666,9 @@ dri2_client_wait_sync(_EGLDriver *drv, _EGLDisplay *dpy, _EGLSync *sync,
/* if timeout is EGL_FOREVER_KHR, it should wait without any timeout.*/
if (timeout == EGL_FOREVER_KHR) {
- if (mtx_lock(&dri2_sync->mutex)) {
- ret = EGL_FALSE;
- goto cleanup;
- }
-
- ret = cnd_wait(&dri2_sync->cond, &dri2_sync->mutex);
-
+ mtx_lock(&dri2_sync->mutex);
+ cnd_wait(&dri2_sync->cond, &dri2_sync->mutex);
mtx_unlock(&dri2_sync->mutex);
-
- if (ret) {
- _eglError(EGL_BAD_PARAMETER, "eglClientWaitSyncKHR");
- ret = EGL_FALSE;
- }
} else {
/* if reusable sync has not been yet signaled */
if (dri2_sync->base.SyncStatus != EGL_SIGNALED_KHR) {
@@ -2697,38 +2687,25 @@ dri2_client_wait_sync(_EGLDriver *drv, _EGLDisplay *dpy, _EGLSync *sync,
expire.nsec -= 1000000000L;
}
- if (mtx_lock(&dri2_sync->mutex)) {
- ret = EGL_FALSE;
- goto cleanup;
- }
-
+ mtx_lock(&dri2_sync->mutex);
ret = cnd_timedwait(&dri2_sync->cond, &dri2_sync->mutex, &expire);
-
mtx_unlock(&dri2_sync->mutex);
- if (ret)
- if (ret == thrd_busy) {
- if (dri2_sync->base.SyncStatus == EGL_UNSIGNALED_KHR) {
- ret = EGL_TIMEOUT_EXPIRED_KHR;
- } else {
- _eglError(EGL_BAD_ACCESS, "eglClientWaitSyncKHR");
- ret = EGL_FALSE;
- }
+ if (ret == thrd_busy) {
+ if (dri2_sync->base.SyncStatus == EGL_UNSIGNALED_KHR) {
+ ret = EGL_TIMEOUT_EXPIRED_KHR;
+ } else {
+ _eglError(EGL_BAD_ACCESS, "eglClientWaitSyncKHR");
+ ret = EGL_FALSE;
}
+ }
}
}
break;
}
+ dri2_egl_unref_sync(dri2_dpy, dri2_sync);
- cleanup:
- dri2_egl_unref_sync(dri2_dpy, dri2_sync);
-
- if (ret == EGL_FALSE) {
- _eglError(EGL_BAD_ACCESS, "eglClientWaitSyncKHR");
- return EGL_FALSE;
- }
-
- return ret;
+ return ret;
}
static EGLBoolean