From 81f3a6b29a6eef2b39279524f71ffcdf74fe05e3 Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Tue, 18 Jul 2017 11:25:32 +0200 Subject: [PATCH] mesa: add delete_sync() helper Signed-off-by: Samuel Pitoiset Reviewed-by: Timothy Arceri --- 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 62f6dbc4a60..6f7bfab42d3 100644 --- a/src/mesa/main/syncobj.c +++ b/src/mesa/main/syncobj.c @@ -223,10 +223,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: @@ -240,21 +239,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.30.2