diff options
author | James Simmons <jsimmons@infradead.org> | 2012-03-10 11:22:59 -0500 |
---|---|---|
committer | James Simmons <jsimmons@infradead.org> | 2012-03-10 11:22:59 -0500 |
commit | 1d7d06ab16661e9a9ac77584371be8affdd7fe1d (patch) | |
tree | 6509871d0f4f4310fb4bcaf879b4d639af82e5d6 | |
parent | e0bd29e47e7956f1cf38d40c3fce466ae486f274 (diff) |
Fix object memory freeing for all cases
-rw-r--r-- | src/via_memmgr.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/src/via_memmgr.c b/src/via_memmgr.c index 7f8bb14..784be02 100644 --- a/src/via_memmgr.c +++ b/src/via_memmgr.c @@ -195,16 +195,14 @@ drm_bo_free(ScrnInfoPtr pScrn, struct buffer_object *obj) if (obj) { DEBUG(ErrorF("Freed %lu (pool %d)\n", obj->offset, obj->domain)); switch (obj->domain) { - case TTM_PL_FLAG_SYSTEM: { + case TTM_PL_FLAG_VRAM: + case TTM_PL_FLAG_TT: + if (pVia->directRenderingType == DRI_NONE) { FBLinearPtr linear = (FBLinearPtr) obj->handle; xf86FreeOffscreenLinear(linear); - } - break; - case TTM_PL_FLAG_VRAM: - case TTM_PL_FLAG_TT: #ifdef XF86DRI - if (pVia->directRenderingType == DRI_1) { + } else if (pVia->directRenderingType == DRI_1) { drm_via_mem_t drm; drm.index = obj->handle; @@ -217,8 +215,11 @@ drm_bo_free(ScrnInfoPtr pScrn, struct buffer_object *obj) close.handle = obj->handle; if (ioctl(pVia->drmmode.fd, DRM_IOCTL_GEM_CLOSE, &close) < 0) ErrorF("DRM failed to free for handle %lld.\n", obj->handle); - } #endif + } + break; + + defaule: break; } free(obj); |