From dfda559b9867d70b70b99c0f3e751fd5930bdc01 Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Wed, 16 Mar 2011 21:13:31 -0600 Subject: [PATCH] mesa: clean up the glBindTexture early out code a bit --- src/mesa/main/texobj.c | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/src/mesa/main/texobj.c b/src/mesa/main/texobj.c index 5be881ec45e..10ddc77b459 100644 --- a/src/mesa/main/texobj.c +++ b/src/mesa/main/texobj.c @@ -1017,7 +1017,6 @@ _mesa_BindTexture( GLenum target, GLuint texName ) struct gl_texture_unit *texUnit = &ctx->Texture.Unit[unit]; struct gl_texture_object *newTexObj = NULL, *defaultTexObj = NULL; GLint targetIndex; - GLboolean early_out = GL_FALSE; ASSERT_OUTSIDE_BEGIN_END(ctx); if (MESA_VERBOSE & (VERBOSE_API|VERBOSE_TEXTURE)) @@ -1071,15 +1070,18 @@ _mesa_BindTexture( GLenum target, GLuint texName ) assert(valid_texture_object(newTexObj)); - _glthread_LOCK_MUTEX(ctx->Shared->Mutex); - if ((ctx->Shared->RefCount == 1) - && (newTexObj == texUnit->CurrentTex[targetIndex])) { - early_out = GL_TRUE; - } - _glthread_UNLOCK_MUTEX(ctx->Shared->Mutex); - - if (early_out) { - return; + /* Check if this texture is only used by this context and is already bound. + * If so, just return. + */ + { + GLboolean early_out; + _glthread_LOCK_MUTEX(ctx->Shared->Mutex); + early_out = ((ctx->Shared->RefCount == 1) + && (newTexObj == texUnit->CurrentTex[targetIndex])); + _glthread_UNLOCK_MUTEX(ctx->Shared->Mutex); + if (early_out) { + return; + } } /* flush before changing binding */ -- 2.30.2