]> git.ipfire.org Git - thirdparty/plymouth.git/commitdiff
ply-device-manager: Fall back to text plugin if no renderers installed
authorRay Strode <rstrode@redhat.com>
Tue, 26 Dec 2023 01:20:31 +0000 (20:20 -0500)
committerRay Strode <rstrode@redhat.com>
Tue, 26 Dec 2023 01:49:01 +0000 (20:49 -0500)
If there's no renderers installed there's no point in continuing to
listen for DRM events and trying to load the drm plugin.

This commit just forces text mode right away in that case.

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

index 99433345c3d96707ae094405bf2f4690e2619b3d..bfdd28d7ab4529054349f4206f5e406dcb937ff5 100644 (file)
@@ -52,6 +52,7 @@
 static void create_devices_from_udev (ply_device_manager_t *manager);
 #endif
 
+static void create_non_graphical_devices (ply_device_manager_t *manager);
 static bool create_devices_for_terminal_and_renderer_type (ply_device_manager_t *manager,
                                                            const char           *device_path,
                                                            ply_terminal_t       *terminal,
@@ -1097,6 +1098,13 @@ create_devices_for_terminal_and_renderer_type (ply_device_manager_t *manager,
                 renderer = ply_renderer_new (renderer_type, device_path, terminal);
 
                 if (renderer != NULL && !ply_renderer_open (renderer)) {
+                        if (errno == ENOENT) {
+                                ply_trace ("No renderer plugins installed, creating non-graphical devices");
+                                ply_renderer_free (renderer);
+                                create_non_graphical_devices (manager);
+                                manager->device_timeout_elapsed = true;
+                                return false;
+                        }
                         ply_trace ("could not open renderer for %s", device_path);
                         ply_renderer_free (renderer);
                         renderer = NULL;