]> git.ipfire.org Git - thirdparty/plymouth.git/commitdiff
[drm] Don't remove drm fb's that we don't know about
authorRay Strode <rstrode@redhat.com>
Wed, 24 Mar 2010 14:19:07 +0000 (10:19 -0400)
committerRay Strode <rstrode@redhat.com>
Wed, 24 Mar 2010 14:19:07 +0000 (10:19 -0400)
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
src/plugins/renderers/drm/ply-renderer-radeon-driver.c

index 33b04b866169cf51defcb9f68f0eeebcd80561d9..b8137dfbabb122c0592143e316941f68f4b8eb9a 100644 (file)
@@ -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);
 
index 0f44ade66743274568871587b4503377a5b89984..527fbfc93d4dd81fc058d9b9621adaa6523b0fa1 100644 (file)
@@ -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);