summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRay Strode <rstrode@redhat.com>2023-12-25 20:20:31 -0500
committerRay Strode <rstrode@redhat.com>2023-12-25 20:49:01 -0500
commit03842d5201e4486fe62635c7b470eb94696f985d (patch)
tree0ee7710e2312ae3a2edaf12fc903efdef08ce454
parent32d930bdda47f4abd5c8c8707708bfbb2ad83570 (diff)
ply-device-manager: Fall back to text plugin if no renderers installed
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.
-rw-r--r--src/libply-splash-core/ply-device-manager.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/libply-splash-core/ply-device-manager.c b/src/libply-splash-core/ply-device-manager.c
index 99433345..bfdd28d7 100644
--- a/src/libply-splash-core/ply-device-manager.c
+++ b/src/libply-splash-core/ply-device-manager.c
@@ -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;