[Mesa-dev] [PATCH 012/101] mesa: add delete_sync() helper

Samuel Pitoiset samuel.pitoiset at gmail.com
Fri Jul 21 17:39:21 UTC 2017


Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
---
 src/mesa/main/syncobj.c | 22 +++++++++++++++-------
 1 file changed, 15 insertions(+), 7 deletions(-)

diff --git a/src/mesa/main/syncobj.c b/src/mesa/main/syncobj.c
index 98938ed59c..c23f4dede9 100644
--- a/src/mesa/main/syncobj.c
+++ b/src/mesa/main/syncobj.c
@@ -226,10 +226,9 @@ _mesa_IsSync(GLsync sync)
 }
 
 
-void GLAPIENTRY
-_mesa_DeleteSync(GLsync sync)
+static ALWAYS_INLINE void
+delete_sync(struct gl_context *ctx, GLsync sync, bool no_error)
 {
-   GET_CURRENT_CONTEXT(ctx);
    struct gl_sync_object *syncObj;
 
    /* From the GL_ARB_sync spec:
@@ -243,21 +242,30 @@ _mesa_DeleteSync(GLsync sync)
    }
 
    syncObj = _mesa_get_and_ref_sync(ctx, sync, true);
-   if (!syncObj) {
-      _mesa_error(ctx, GL_INVALID_VALUE, "glDeleteSync (not a valid sync object)");
+   if (!no_error && !syncObj) {
+      _mesa_error(ctx, GL_INVALID_VALUE,
+                  "glDeleteSync (not a valid sync object)");
       return;
    }
 
    /* If there are no client-waits or server-waits pending on this sync, delete
     * the underlying object. Note that we double-unref the object, as
-    * _mesa_get_and_ref_sync above took an extra refcount to make sure the pointer
-    * is valid for us to manipulate.
+    * _mesa_get_and_ref_sync above took an extra refcount to make sure the
+    * pointer is valid for us to manipulate.
     */
    syncObj->DeletePending = GL_TRUE;
    _mesa_unref_sync_object(ctx, syncObj, 2);
 }
 
 
+void GLAPIENTRY
+_mesa_DeleteSync(GLsync sync)
+{
+   GET_CURRENT_CONTEXT(ctx);
+   delete_sync(ctx, sync, false);
+}
+
+
 static GLsync
 fence_sync(struct gl_context *ctx, GLenum condition, GLbitfield flags)
 {
-- 
2.13.3



More information about the mesa-dev mailing list