diff options
author | Brian Paul <[email protected]> | 2008-07-04 10:29:15 -0600 |
---|---|---|
committer | Brian Paul <[email protected]> | 2008-07-04 10:29:15 -0600 |
commit | 2fa7b3f78639114aec42fcbbfc29d3645832708b (patch) | |
tree | a0dc1ff3b4181e61f5bdf16ffbc3238f22c5c8f8 /src/mesa/main/framebuffer.c | |
parent | 9ca1c62a963ca7024c4bccf83af3f90955cd5068 (diff) |
mesa: Implement mutex/locking around texture object reference counting.
Use new _mesa_reference_texobj() function for referencing/unreferencing
textures. Add new assertions/tests to try to detect invalid usage of
deleted textures.
cherry-picked from master (9e01b915f1243a3f551cb795b7124bd1e52ca15f)
Diffstat (limited to 'src/mesa/main/framebuffer.c')
-rw-r--r-- | src/mesa/main/framebuffer.c | 13 |
1 files changed, 4 insertions, 9 deletions
diff --git a/src/mesa/main/framebuffer.c b/src/mesa/main/framebuffer.c index 96f1b30c9b2..dab449fc09a 100644 --- a/src/mesa/main/framebuffer.c +++ b/src/mesa/main/framebuffer.c @@ -38,6 +38,7 @@ #include "fbobject.h" #include "framebuffer.h" #include "renderbuffer.h" +#include "texobj.h" @@ -192,17 +193,11 @@ _mesa_free_framebuffer_data(struct gl_framebuffer *fb) _mesa_reference_renderbuffer(&att->Renderbuffer, NULL); } if (att->Texture) { - /* render to texture */ - att->Texture->RefCount--; - if (att->Texture->RefCount == 0) { - GET_CURRENT_CONTEXT(ctx); - if (ctx) { - ctx->Driver.DeleteTexture(ctx, att->Texture); - } - } + _mesa_reference_texobj(&att->Texture, NULL); } + ASSERT(!att->Renderbuffer); + ASSERT(!att->Texture); att->Type = GL_NONE; - att->Texture = NULL; } /* unbind _Depth/_StencilBuffer to decr ref counts */ |