temporary add some extra renderbuffer debug code

This commit is contained in:
Brian
2007-04-05 09:28:09 -06:00
parent 33c3739628
commit 0cae814f36
2 changed files with 9 additions and 1 deletions

View File

@@ -2222,6 +2222,8 @@ struct gl_shared_state
*/ */
struct gl_renderbuffer struct gl_renderbuffer
{ {
#define RB_MAGIC 0xaabbccdd
int Magic; /** XXX TEMPORARY DEBUG INFO */
_glthread_Mutex Mutex; /**< for thread safety */ _glthread_Mutex Mutex; /**< for thread safety */
GLuint ClassID; /**< Useful for drivers */ GLuint ClassID; /**< Useful for drivers */
GLuint Name; GLuint Name;

View File

@@ -1471,6 +1471,7 @@ _mesa_init_renderbuffer(struct gl_renderbuffer *rb, GLuint name)
{ {
_glthread_INIT_MUTEX(rb->Mutex); _glthread_INIT_MUTEX(rb->Mutex);
rb->Magic = RB_MAGIC;
rb->ClassID = 0; rb->ClassID = 0;
rb->Name = name; rb->Name = name;
rb->RefCount = 0; rb->RefCount = 0;
@@ -2149,21 +2150,26 @@ _mesa_reference_renderbuffer(struct gl_renderbuffer **ptr,
GLboolean deleteFlag = GL_FALSE; GLboolean deleteFlag = GL_FALSE;
struct gl_renderbuffer *oldRb = *ptr; struct gl_renderbuffer *oldRb = *ptr;
assert(oldRb->Magic == RB_MAGIC);
_glthread_LOCK_MUTEX(oldRb->Mutex); _glthread_LOCK_MUTEX(oldRb->Mutex);
assert(oldRb->Magic == RB_MAGIC);
ASSERT(oldRb->RefCount > 0); ASSERT(oldRb->RefCount > 0);
oldRb->RefCount--; oldRb->RefCount--;
/*printf("RB DECR %p (%d) to %d\n", (void*) oldRb, oldRb->Name, oldRb->RefCount);*/ /*printf("RB DECR %p (%d) to %d\n", (void*) oldRb, oldRb->Name, oldRb->RefCount);*/
deleteFlag = (oldRb->RefCount == 0); deleteFlag = (oldRb->RefCount == 0);
_glthread_UNLOCK_MUTEX(oldRb->Mutex); _glthread_UNLOCK_MUTEX(oldRb->Mutex);
if (deleteFlag) if (deleteFlag) {
oldRb->Magic = 0; /* now invalid memory! */
oldRb->Delete(oldRb); oldRb->Delete(oldRb);
}
*ptr = NULL; *ptr = NULL;
} }
assert(!*ptr); assert(!*ptr);
if (rb) { if (rb) {
assert(rb->Magic == RB_MAGIC);
/* reference new renderbuffer */ /* reference new renderbuffer */
_glthread_LOCK_MUTEX(rb->Mutex); _glthread_LOCK_MUTEX(rb->Mutex);
rb->RefCount++; rb->RefCount++;