From fd6a2c226d8babf1c77dd09efbab5473b9173c51 Mon Sep 17 00:00:00 2001 From: Joshua Lambert Date: Fri, 6 Dec 2019 12:51:06 -0800 Subject: Add mechanism for device-specific loop images Bug: 144974129 Test: Manual - Testing OTA and Factory Reset 1) Tested with matching device name ({devicename}00000.png) 2) Tested with no matching device name (uses loop00000.png default) 3) Tested with empty string device name (uses loop00000.png default) Change-Id: I4c73af82ab8826d1a43fe193a7616bc219d536e4 --- recovery_ui/screen_ui.cpp | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'recovery_ui') diff --git a/recovery_ui/screen_ui.cpp b/recovery_ui/screen_ui.cpp index 087fc0e84..b3ef113a7 100644 --- a/recovery_ui/screen_ui.cpp +++ b/recovery_ui/screen_ui.cpp @@ -941,17 +941,27 @@ void ScreenRecoveryUI::LoadAnimation() { closedir); dirent* de; std::vector intro_frame_names; - std::vector loop_frame_names; + std::vector default_loop_frame_names; + std::vector device_loop_frame_names; + // Create string format for device-specific loop animations. + std::string deviceformat = android::base::GetProperty("ro.product.product.name", ""); + deviceformat += "%d%n.png"; while ((de = readdir(dir.get())) != nullptr) { int value, num_chars; if (sscanf(de->d_name, "intro%d%n.png", &value, &num_chars) == 1) { intro_frame_names.emplace_back(de->d_name, num_chars); } else if (sscanf(de->d_name, "loop%d%n.png", &value, &num_chars) == 1) { - loop_frame_names.emplace_back(de->d_name, num_chars); + default_loop_frame_names.emplace_back(de->d_name, num_chars); + } else if (sscanf(de->d_name, deviceformat.c_str(), &value, &num_chars) == 1) { + device_loop_frame_names.emplace_back(de->d_name, num_chars); } } + // Favor device-specific loop frames, if they exist. + auto& loop_frame_names = + device_loop_frame_names.empty() ? default_loop_frame_names : device_loop_frame_names; + size_t intro_frames = intro_frame_names.size(); size_t loop_frames = loop_frame_names.size(); -- cgit v1.2.3