From: Hans de Goede Date: Tue, 4 Jun 2024 19:24:22 +0000 (+0200) Subject: ply-renderer: Add new PLY_RENDERER_TYPE_SIMPLEDRM renderer-type X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=19d49a42fcc3cf9d3ee62a572eec24e8b73f9799;p=thirdparty%2Fplymouth.git ply-renderer: Add new PLY_RENDERER_TYPE_SIMPLEDRM renderer-type 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. --- diff --git a/src/libply-splash-core/ply-device-manager.c b/src/libply-splash-core/ply-device-manager.c index 4c48f606..256b38d0 100644 --- a/src/libply-splash-core/ply-device-manager.c +++ b/src/libply-splash-core/ply-device-manager.c @@ -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; diff --git a/src/libply-splash-core/ply-renderer.c b/src/libply-splash-core/ply-renderer.c index 40a2c813..6a7aff96 100644 --- a/src/libply-splash-core/ply-renderer.c +++ b/src/libply-splash-core/ply-renderer.c @@ -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 } }; diff --git a/src/libply-splash-core/ply-renderer.h b/src/libply-splash-core/ply-renderer.h index 5fbf819d..34ff5886 100644 --- a/src/libply-splash-core/ply-renderer.h +++ b/src/libply-splash-core/ply-renderer.h @@ -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;