[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