diff options
author | Dave Airlie <[email protected]> | 2009-02-17 10:25:34 +1000 |
---|---|---|
committer | Dave Airlie <[email protected]> | 2009-02-17 10:25:34 +1000 |
commit | 5325f8624093bb1ec30d581b4ff64218ceab99f9 (patch) | |
tree | 78a9367863c6ac6f28c4cd524557ea95ff65a467 /src | |
parent | ecf0a3eac1a4868da83ab0a3c21e2f265f7cf9e2 (diff) |
dri/radeon: export a function to cleanup a texture object.
The radeon legacy code want to cleanup not free the texture obj,
so export a function to do that and wrap it.
Diffstat (limited to 'src')
-rw-r--r-- | src/mesa/drivers/dri/common/texmem.c | 16 | ||||
-rw-r--r-- | src/mesa/drivers/dri/common/texmem.h | 1 | ||||
-rw-r--r-- | src/mesa/drivers/dri/radeon/radeon_bo_legacy.c | 4 |
3 files changed, 17 insertions, 4 deletions
diff --git a/src/mesa/drivers/dri/common/texmem.c b/src/mesa/drivers/dri/common/texmem.c index ff174a251d2..65c3c4e63e2 100644 --- a/src/mesa/drivers/dri/common/texmem.c +++ b/src/mesa/drivers/dri/common/texmem.c @@ -314,11 +314,10 @@ void driSwapOutTextureObject( driTextureObject * t ) * \param t Texture object to be destroyed */ -void driDestroyTextureObject( driTextureObject * t ) +void driCleanupTextureObject( driTextureObject * t ) { driTexHeap * heap; - if ( 0 ) { fprintf( stderr, "[%s:%d] freeing %p (tObj = %p, DriverData = %p)\n", __FILE__, __LINE__, @@ -350,7 +349,6 @@ void driDestroyTextureObject( driTextureObject * t ) } remove_from_list( t ); - FREE( t ); } if ( 0 ) { @@ -359,6 +357,18 @@ void driDestroyTextureObject( driTextureObject * t ) } +void driDestroyTextureObject( driTextureObject * t ) +{ + driTexHeap * heap; + + if (t == NULL) + return; + + driCleanupTextureObject(t); + FREE(t); +} + + /** diff --git a/src/mesa/drivers/dri/common/texmem.h b/src/mesa/drivers/dri/common/texmem.h index 9c065da8b4f..b9beeeadfca 100644 --- a/src/mesa/drivers/dri/common/texmem.h +++ b/src/mesa/drivers/dri/common/texmem.h @@ -272,6 +272,7 @@ void driAgeTextures( driTexHeap * heap ); void driUpdateTextureLRU( driTextureObject * t ); void driSwapOutTextureObject( driTextureObject * t ); +void driCleanupTextureObject( driTextureObject * t ); void driDestroyTextureObject( driTextureObject * t ); int driAllocateTexture( driTexHeap * const * heap_array, unsigned nr_heaps, driTextureObject * t ); diff --git a/src/mesa/drivers/dri/radeon/radeon_bo_legacy.c b/src/mesa/drivers/dri/radeon/radeon_bo_legacy.c index 1d25887e691..65b0a9a0ce0 100644 --- a/src/mesa/drivers/dri/radeon/radeon_bo_legacy.c +++ b/src/mesa/drivers/dri/radeon/radeon_bo_legacy.c @@ -373,11 +373,13 @@ static void bo_free(struct bo_legacy *bo_legacy) /* dma buffers */ bo_dma_free(&bo_legacy->base); } else { + if (bo_legacy->got_dri_texture_obj) + driCleanupTextureObject(&bo_legacy->dri_texture_obj); + /* free backing store */ free(bo_legacy->ptr); } } - memset(bo_legacy, 0 , sizeof(struct bo_legacy)); free(bo_legacy); } |