From 344afa14f5095913cd97a4e810eac47f2a4a9bb7 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Wed, 24 Mar 2010 10:19:07 -0400 Subject: [PATCH] [drm] Don't remove drm fb's that we don't know about When we access to the kernel console's fb, we don't own it and shouldn't remove it. This is like commit 808e129fd144e4065c08314723837b4141e90355, but for radeon and nouveau instead of intel. --- src/plugins/renderers/drm/ply-renderer-nouveau-driver.c | 6 +++++- src/plugins/renderers/drm/ply-renderer-radeon-driver.c | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/plugins/renderers/drm/ply-renderer-nouveau-driver.c b/src/plugins/renderers/drm/ply-renderer-nouveau-driver.c index 33b04b86..b8137dfb 100644 --- a/src/plugins/renderers/drm/ply-renderer-nouveau-driver.c +++ b/src/plugins/renderers/drm/ply-renderer-nouveau-driver.c @@ -60,6 +60,8 @@ struct _ply_renderer_buffer unsigned long width; unsigned long height; unsigned long row_stride; + + uint32_t added_fb : 1; }; struct _ply_renderer_driver @@ -250,6 +252,7 @@ create_buffer (ply_renderer_driver_t *driver, buffer = ply_renderer_buffer_new (driver, buffer_object, buffer_id, width, height, *row_stride); + buffer->added_fb = true; ply_hashtable_insert (driver->buffers, (void *) (uintptr_t) buffer_id, buffer); @@ -317,7 +320,8 @@ destroy_buffer (ply_renderer_driver_t *driver, assert (buffer != NULL); - drmModeRmFB (driver->device_fd, buffer->id); + if (buffer->added_fb) + drmModeRmFB (driver->device_fd, buffer->id); nouveau_bo_ref (NULL, &buffer->object); diff --git a/src/plugins/renderers/drm/ply-renderer-radeon-driver.c b/src/plugins/renderers/drm/ply-renderer-radeon-driver.c index 0f44ade6..527fbfc9 100644 --- a/src/plugins/renderers/drm/ply-renderer-radeon-driver.c +++ b/src/plugins/renderers/drm/ply-renderer-radeon-driver.c @@ -60,6 +60,8 @@ struct _ply_renderer_buffer unsigned long width; unsigned long height; unsigned long row_stride; + + uint32_t added_fb : 1; }; struct _ply_renderer_driver @@ -275,6 +277,7 @@ create_buffer (ply_renderer_driver_t *driver, buffer = ply_renderer_buffer_new (driver, buffer_object, buffer_id, width, height, *row_stride); + buffer->added_fb = true; ply_hashtable_insert (driver->buffers, (void *) (uintptr_t) buffer_id, buffer); @@ -342,7 +345,8 @@ destroy_buffer (ply_renderer_driver_t *driver, assert (buffer != NULL); - drmModeRmFB (driver->device_fd, buffer->id); + if (buffer->added_fb) + drmModeRmFB (driver->device_fd, buffer->id); radeon_bo_unref (buffer->object);