]> git.ipfire.org Git - thirdparty/plymouth.git/commitdiff
drm: Limit backend->resources lifetime to within query_device
authorHans de Goede <hdegoede@redhat.com>
Tue, 15 Jan 2019 08:21:05 +0000 (09:21 +0100)
committerHans de Goede <hdegoede@redhat.com>
Wed, 16 Jan 2019 15:57:07 +0000 (16:57 +0100)
We do not need / use backend->resources anywhere outside of the query_device
function and with the upcoming hotplug support we need to get a fresh set
of resources on change events, so limit the resources lifetime to
query_device.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
src/plugins/renderers/drm/plugin.c

index a66cd675bef0b8004680424037bc59527ca1a994..4e3c41a17e9731d80023cba77302ed29a9779b28 100644 (file)
@@ -838,8 +838,6 @@ destroy_backend (ply_renderer_backend_t *backend)
         ply_hashtable_free (backend->output_buffers);
         ply_hashtable_free (backend->heads_by_controller_id);
 
-        drmModeFreeResources (backend->resources);
-
         free (backend->outputs);
         free (backend);
 }
@@ -1385,6 +1383,8 @@ has_32bpp_support (ply_renderer_backend_t *backend)
 static bool
 query_device (ply_renderer_backend_t *backend)
 {
+        bool ret = true;
+
         assert (backend != NULL);
         assert (backend->device_fd >= 0);
 
@@ -1397,15 +1397,16 @@ query_device (ply_renderer_backend_t *backend)
 
         if (!create_heads_for_active_connectors (backend)) {
                 ply_trace ("Could not initialize heads");
-                return false;
-        }
-
-        if (!has_32bpp_support (backend)) {
+                ret = false;
+        } else if (!has_32bpp_support (backend)) {
                 ply_trace ("Device doesn't support 32bpp framebuffer");
-                return false;
+                ret = false;
         }
 
-        return true;
+        drmModeFreeResources (backend->resources);
+        backend->resources = NULL;
+
+        return ret;
 }
 
 static bool