]> git.ipfire.org Git - thirdparty/plymouth.git/commitdiff
Use fallback image if BGRT is not supported
authorMarius Meisenzahl <mariusmeisenzahl@gmail.com>
Mon, 7 Dec 2020 22:39:07 +0000 (22:39 +0000)
committerRay Strode <halfline@gmail.com>
Mon, 7 Dec 2020 22:39:07 +0000 (22:39 +0000)
src/plugins/splash/two-step/plugin.c

index 32b4bcf64caf7c2abbd0e91972b8a2ab4d6ff727..01c0bd1c958522d0cd3909a76d1a1666ee292697 100644 (file)
@@ -139,6 +139,7 @@ struct _ply_boot_splash_plugin
         ply_image_t                        *header_image;
         ply_image_t                        *background_tile_image;
         ply_image_t                        *background_bgrt_image;
+        ply_image_t                        *background_bgrt_fallback_image;
         ply_image_t                        *watermark_image;
         ply_list_t                         *views;
 
@@ -1048,6 +1049,10 @@ create_plugin (ply_key_file_t *key_file)
         plugin->background_tile_image = ply_image_new (image_path);
         free (image_path);
 
+        asprintf (&image_path, "%s/bgrt-fallback.png", image_dir);
+        plugin->background_bgrt_fallback_image = ply_image_new (image_path);
+        free (image_path);
+
         asprintf (&image_path, "%s/watermark.png", image_dir);
         plugin->watermark_image = ply_image_new (image_path);
         free (image_path);
@@ -1243,6 +1248,9 @@ destroy_plugin (ply_boot_splash_plugin_t *plugin)
         if (plugin->background_bgrt_image != NULL)
                 ply_image_free (plugin->background_bgrt_image);
 
+        if (plugin->background_bgrt_fallback_image != NULL)
+                ply_image_free (plugin->background_bgrt_fallback_image);
+
         if (plugin->watermark_image != NULL)
                 ply_image_free (plugin->watermark_image);
 
@@ -1655,11 +1663,17 @@ show_splash_screen (ply_boot_splash_plugin_t *plugin,
                         plugin->background_bgrt_raw_width = ply_image_get_width (plugin->background_bgrt_image);
                         plugin->background_bgrt_raw_height = ply_image_get_height (plugin->background_bgrt_image);
                 } else {
-                        ply_image_free (plugin->background_bgrt_image);
-                        plugin->background_bgrt_image = NULL;
-                        for (i = 0; i < PLY_BOOT_SPLASH_MODE_COUNT; i++)
-                                plugin->mode_settings[i].use_firmware_background = false;
-                        plugin->use_firmware_background = false;
+                        ply_trace ("loading background bgrt fallback image");
+                        if (ply_image_load (plugin->background_bgrt_fallback_image)) {
+                                plugin->background_bgrt_image = plugin->background_bgrt_fallback_image;
+                                plugin->background_bgrt_fallback_image = NULL;
+                        } else  {
+                                ply_image_free (plugin->background_bgrt_image);
+                                plugin->background_bgrt_image = NULL;
+                                for (i = 0; i < PLY_BOOT_SPLASH_MODE_COUNT; i++)
+                                        plugin->mode_settings[i].use_firmware_background = false;
+                                plugin->use_firmware_background = false;
+                        }
                 }
         }