summaryrefslogtreecommitdiffstats
path: root/gui/action.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'gui/action.cpp')
-rw-r--r--gui/action.cpp27
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;
}