diff options
Diffstat (limited to 'gui/action.cpp')
-rw-r--r-- | gui/action.cpp | 27 |
1 files changed, 7 insertions, 20 deletions
diff --git a/gui/action.cpp b/gui/action.cpp index 86907a54f..c48c390f9 100644 --- a/gui/action.cpp +++ b/gui/action.cpp @@ -541,26 +541,13 @@ int GUIAction::page(std::string arg) int GUIAction::reload(std::string arg __unused) { - int check = 0, ret_val = 0; - std::string theme_path; - - theme_path = DataManager::GetSettingsStoragePath(); - if (PartitionManager.Mount_By_Path(theme_path.c_str(), 1) < 0) { - LOGERR("Unable to mount %s during reload function startup.\n", theme_path.c_str()); - check = 1; - } - - theme_path += "/TWRP/theme/ui.zip"; - if (check != 0 || PageManager::ReloadPackage("TWRP", theme_path) != 0) - { - // Loading the custom theme failed - try loading the stock theme - LOGINFO("Attempting to reload stock theme...\n"); - if (PageManager::ReloadPackage("TWRP", TWRES "ui.xml")) - { - LOGERR("Failed to load base packages.\n"); - ret_val = 1; - } - } + PageManager::RequestReload(); + // The actual reload is handled in pages.cpp in PageManager::RunReload() + // The reload will occur on the next Update or Render call and will + // be performed in the rendoer thread instead of the action thread + // to prevent crashing which could occur when we start deleting + // GUI resources in the action thread while we attempt to render + // with those same resources in another thread. return 0; } |