summaryrefslogtreecommitdiffstats
path: root/src/gallium/winsys/r600
diff options
context:
space:
mode:
authorTilman Sauerbeck <[email protected]>2010-10-29 21:34:26 +0200
committerTilman Sauerbeck <[email protected]>2010-11-02 21:52:38 +0100
commit34e75b0ca80011023c416831283fcce716b980b2 (patch)
treeabdea256d0c5e7cc1d07c3ff1075e40a7904c124 /src/gallium/winsys/r600
parentb675266f0e144fd8cd08600c72a8207ce50b25e8 (diff)
r600g: Fixed unmap condition in radeon_bo_pb_destroy().
Signed-off-by: Tilman Sauerbeck <[email protected]>
Diffstat (limited to 'src/gallium/winsys/r600')
-rw-r--r--src/gallium/winsys/r600/drm/radeon_bo_pb.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/gallium/winsys/r600/drm/radeon_bo_pb.c b/src/gallium/winsys/r600/drm/radeon_bo_pb.c
index f74b934c374..312552f0758 100644
--- a/src/gallium/winsys/r600/drm/radeon_bo_pb.c
+++ b/src/gallium/winsys/r600/drm/radeon_bo_pb.c
@@ -63,11 +63,13 @@ static void radeon_bo_pb_destroy(struct pb_buffer *_buf)
{
struct radeon_bo_pb *buf = radeon_bo_pb(_buf);
- LIST_DEL(&buf->maplist);
-
- if (buf->bo->data != NULL) {
+ /* If this buffer is on the list of buffers to unmap,
+ * do the unmapping now.
+ */
+ if (!LIST_IS_EMPTY(&buf->maplist))
radeon_bo_unmap(buf->mgr->radeon, buf->bo);
- }
+
+ LIST_DEL(&buf->maplist);
radeon_bo_reference(buf->mgr->radeon, &buf->bo, NULL);
FREE(buf);
}