]> git.ipfire.org Git - thirdparty/plymouth.git/commitdiff
ply-renderer: Add new PLY_RENDERER_TYPE_SIMPLEDRM renderer-type
authorHans de Goede <hdegoede@redhat.com>
Tue, 4 Jun 2024 19:24:22 +0000 (21:24 +0200)
committerHans de Goede <hdegoede@redhat.com>
Fri, 7 Jun 2024 15:21:00 +0000 (17:21 +0200)
Add a new PLY_RENDERER_TYPE_SIMPLEDRM renderer-type to help differentiate
the simpledrm case from the regular drm device case.

simpledrm devices require some special handling in the device-manager,
this is a preparation patch for improving the simpledrm handling
in ply-device-manager.

src/libply-splash-core/ply-device-manager.c
src/libply-splash-core/ply-renderer.c
src/libply-splash-core/ply-renderer.h

index 4c48f606fb514910cc466457167a57e88495dc03..256b38d05f5ba6885dfb8107592781f18ae0328c 100644 (file)
@@ -380,7 +380,7 @@ static bool
 create_devices_for_udev_device (ply_device_manager_t *manager,
                                 struct udev_device   *device)
 {
-        const char *device_path, *device_sysname;
+        const char *device_path, *device_sysname, *device_syspath;
         bool created = false;
         bool force_fb = false;
 
@@ -389,6 +389,7 @@ create_devices_for_udev_device (ply_device_manager_t *manager,
 
         device_path = udev_device_get_devnode (device);
         device_sysname = udev_device_get_sysname (device);
+        device_syspath = udev_device_get_syspath (device);
 
         if (device_path != NULL) {
                 const char *subsystem;
@@ -403,7 +404,10 @@ create_devices_for_udev_device (ply_device_manager_t *manager,
                                 return false;
                         }
                         ply_trace ("found DRM device %s", device_path);
-                        renderer_type = PLY_RENDERER_TYPE_DRM;
+                        if (syspath_is_simpledrm (device_syspath))
+                                renderer_type = PLY_RENDERER_TYPE_SIMPLEDRM;
+                        else
+                                renderer_type = PLY_RENDERER_TYPE_DRM;
                 } else if (strcmp (subsystem, SUBSYSTEM_FRAME_BUFFER) == 0) {
                         ply_trace ("found frame buffer device %s", device_path);
                         if (!fb_device_has_drm_device (manager, device))
@@ -446,7 +450,8 @@ create_devices_for_udev_device (ply_device_manager_t *manager,
                                                                                  terminal,
                                                                                  renderer_type);
                         if (created) {
-                                if (renderer_type == PLY_RENDERER_TYPE_DRM)
+                                if (renderer_type == PLY_RENDERER_TYPE_DRM ||
+                                    renderer_type == PLY_RENDERER_TYPE_SIMPLEDRM)
                                         manager->found_drm_device = 1;
                                 if (renderer_type == PLY_RENDERER_TYPE_FRAME_BUFFER)
                                         manager->found_fb_device = 1;
index 40a2c813ec891d2278679c20ab5922fcb4d2d53e..6a7aff96274744377a394d5357835ac81c96dc0a 100644 (file)
@@ -269,6 +269,7 @@ ply_renderer_open (ply_renderer_t *renderer)
         {
                 { PLY_RENDERER_TYPE_X11,          PLYMOUTH_PLUGIN_PATH "renderers/x11.so"          },
                 { PLY_RENDERER_TYPE_DRM,          PLYMOUTH_PLUGIN_PATH "renderers/drm.so"          },
+                { PLY_RENDERER_TYPE_SIMPLEDRM,    PLYMOUTH_PLUGIN_PATH "renderers/drm.so"          },
                 { PLY_RENDERER_TYPE_FRAME_BUFFER, PLYMOUTH_PLUGIN_PATH "renderers/frame-buffer.so" },
                 { PLY_RENDERER_TYPE_NONE,         NULL                                             }
         };
index 5fbf819d99b1589798396ee8b02452158c57f73c..34ff5886b1543300c880f33037fc4ca67c9cbae5 100644 (file)
@@ -41,6 +41,7 @@ typedef enum
         PLY_RENDERER_TYPE_NONE = -1,
         PLY_RENDERER_TYPE_AUTO,
         PLY_RENDERER_TYPE_DRM,
+        PLY_RENDERER_TYPE_SIMPLEDRM,
         PLY_RENDERER_TYPE_FRAME_BUFFER,
         PLY_RENDERER_TYPE_X11
 } ply_renderer_type_t;