From: Ray Strode Date: Wed, 24 Mar 2010 14:19:07 +0000 (-0400) Subject: [drm] Don't remove drm fb's that we don't know about X-Git-Tag: 0.8.0~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=344afa14f5095913cd97a4e810eac47f2a4a9bb7;p=thirdparty%2Fplymouth.git [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. --- 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);