Blob Blame Raw
From 353d12806adf6be4d051d491a2af28e3b24b3063 Mon Sep 17 00:00:00 2001
From: Hans de Goede <hdegoede@redhat.com>
Date: Mon, 2 Jul 2018 09:39:12 +0200
Subject: [PATCH 3/3] show_theme: Only activate renderers if the splash uses
 pixel-displays

Since commit eb147e52b123 ("renderer: support reactivating renderer without
closing it first"), the show_theme() call done by
toggle_between_splash_and_details() will reactivate the renderers after
switching to details mode, causing the drm renderer to switch the screen
from text to graphics mode hiding the details being logged on the console.

This commit fixes this by making show_theme() not call
ply_device_manager_activate_renderers() if the splash does not uses
pixel-displays.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
---
 src/libply-splash-core/ply-boot-splash.c | 5 +++++
 src/libply-splash-core/ply-boot-splash.h | 1 +
 src/main.c                               | 3 ++-
 3 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/src/libply-splash-core/ply-boot-splash.c b/src/libply-splash-core/ply-boot-splash.c
index 87a7a0c..7888785 100644
--- a/src/libply-splash-core/ply-boot-splash.c
+++ b/src/libply-splash-core/ply-boot-splash.c
@@ -695,4 +695,9 @@ ply_boot_splash_become_idle (ply_boot_splash_t                *splash,
         splash->plugin_interface->become_idle (splash->plugin, splash->idle_trigger);
 }
 
+bool ply_boot_splash_uses_pixel_displays (ply_boot_splash_t *splash)
+{
+        return splash->plugin_interface->add_pixel_display != NULL;
+}
+
 /* vim: set ts=4 sw=4 expandtab autoindent cindent cino={.5s,(0: */
diff --git a/src/libply-splash-core/ply-boot-splash.h b/src/libply-splash-core/ply-boot-splash.h
index b66ca47..0bdbe96 100644
--- a/src/libply-splash-core/ply-boot-splash.h
+++ b/src/libply-splash-core/ply-boot-splash.h
@@ -89,6 +89,7 @@ void ply_boot_splash_attach_progress (ply_boot_splash_t *splash,
 void ply_boot_splash_become_idle (ply_boot_splash_t                *splash,
                                   ply_boot_splash_on_idle_handler_t idle_handler,
                                   void                             *user_data);
+bool ply_boot_splash_uses_pixel_displays (ply_boot_splash_t *splash);
 
 
 #endif
diff --git a/src/main.c b/src/main.c
index ff02ea6..13848c1 100644
--- a/src/main.c
+++ b/src/main.c
@@ -1763,7 +1763,8 @@ show_theme (state_t    *state,
                 return NULL;
 
         attach_splash_to_devices (state, splash);
-        ply_device_manager_activate_renderers (state->device_manager);
+        if (ply_boot_splash_uses_pixel_displays (splash))
+                ply_device_manager_activate_renderers (state->device_manager);
 
         splash_mode = get_splash_mode_from_mode (state->mode);
 
-- 
2.17.1