From: Marius Meisenzahl Date: Mon, 7 Dec 2020 22:39:07 +0000 (+0000) Subject: Use fallback image if BGRT is not supported X-Git-Tag: 22.02.122~26^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=3ed2a1a92c61593010dbef765b3824490ee2938c;p=thirdparty%2Fplymouth.git Use fallback image if BGRT is not supported --- diff --git a/src/plugins/splash/two-step/plugin.c b/src/plugins/splash/two-step/plugin.c index 32b4bcf6..01c0bd1c 100644 --- a/src/plugins/splash/two-step/plugin.c +++ b/src/plugins/splash/two-step/plugin.c @@ -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; + } } }