Use /twres instead of /res for theme resources
AOSP and other ROM trees now do a rm -rf of the res folder during
the ramdisk creation process that removes the TWRP resources.
Using /twres instead of /res works around this issue making TWRP
more compatible with AOSP and other build trees.
Change-Id: I0d4c7e06ca381ac5aa0069b6f2b8c47f7dec49e7
diff --git a/gui/Android.mk b/gui/Android.mk
index e75c521..fca5e07 100644
--- a/gui/Android.mk
+++ b/gui/Android.mk
@@ -82,6 +82,7 @@
endif
LOCAL_C_INCLUDES += bionic external/stlport/stlport $(commands_recovery_local_path)/gui/devices/$(DEVICE_RESOLUTION)
+LOCAL_CFLAGS += -DTWRES=\"$(TWRES_PATH)\"
include $(BUILD_STATIC_LIBRARY)
@@ -90,7 +91,7 @@
LOCAL_MODULE := twrp
LOCAL_MODULE_TAGS := eng
LOCAL_MODULE_CLASS := RECOVERY_EXECUTABLES
-LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)/res
+LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)$(TWRES_PATH)
TWRP_RES_LOC := $(commands_recovery_local_path)/gui/devices/common/res
TWRP_COMMON_XML := $(hide) echo "No common TWRP XML resources"
@@ -100,20 +101,20 @@
WATCH := 240x240 280x280 320x320
TWRP_THEME_LOC := $(commands_recovery_local_path)/gui/devices/$(DEVICE_RESOLUTION)/res
ifneq ($(filter $(DEVICE_RESOLUTION), $(PORTRAIT)),)
- TWRP_COMMON_XML := cp -fr $(commands_recovery_local_path)/gui/devices/portrait/res/* $(TARGET_RECOVERY_ROOT_OUT)/res/
+ TWRP_COMMON_XML := cp -fr $(commands_recovery_local_path)/gui/devices/portrait/res/* $(TARGET_RECOVERY_ROOT_OUT)$(TWRES_PATH)
else ifneq ($(filter $(DEVICE_RESOLUTION), $(LANDSCAPE)),)
- TWRP_COMMON_XML := cp -fr $(commands_recovery_local_path)/gui/devices/landscape/res/* $(TARGET_RECOVERY_ROOT_OUT)/res/
+ TWRP_COMMON_XML := cp -fr $(commands_recovery_local_path)/gui/devices/landscape/res/* $(TARGET_RECOVERY_ROOT_OUT)$(TWRES_PATH)
else ifneq ($(filter $(DEVICE_RESOLUTION), $(WATCH)),)
- TWRP_COMMON_XML := cp -fr $(commands_recovery_local_path)/gui/devices/watch/res/* $(TARGET_RECOVERY_ROOT_OUT)/res/
+ TWRP_COMMON_XML := cp -fr $(commands_recovery_local_path)/gui/devices/watch/res/* $(TARGET_RECOVERY_ROOT_OUT)$(TWRES_PATH)
endif
else
TWRP_THEME_LOC := $(TW_CUSTOM_THEME)
endif
ifeq ($(TW_DISABLE_TTF), true)
- TWRP_REMOVE_FONT := rm -f $(TARGET_RECOVERY_ROOT_OUT)/res/fonts/*.ttf
+ TWRP_REMOVE_FONT := rm -f $(TARGET_RECOVERY_ROOT_OUT)$(TWRES_PATH)fonts/*.ttf
else
- TWRP_REMOVE_FONT := rm -f $(TARGET_RECOVERY_ROOT_OUT)/res/fonts/*.dat
+ TWRP_REMOVE_FONT := rm -f $(TARGET_RECOVERY_ROOT_OUT)$(TWRES_PATH)fonts/*.dat
endif
TWRP_RES_GEN := $(intermediates)/twrp
@@ -124,9 +125,9 @@
endif
$(TWRP_RES_GEN):
- mkdir -p $(TARGET_RECOVERY_ROOT_OUT)/res/
- cp -fr $(TWRP_RES_LOC)/* $(TARGET_RECOVERY_ROOT_OUT)/res/
- cp -fr $(TWRP_THEME_LOC)/* $(TARGET_RECOVERY_ROOT_OUT)/res/
+ mkdir -p $(TARGET_RECOVERY_ROOT_OUT)$(TWRES_PATH)
+ cp -fr $(TWRP_RES_LOC)/* $(TARGET_RECOVERY_ROOT_OUT)$(TWRES_PATH)
+ cp -fr $(TWRP_THEME_LOC)/* $(TARGET_RECOVERY_ROOT_OUT)$(TWRES_PATH)
$(TWRP_COMMON_XML)
$(TWRP_REMOVE_FONT)
mkdir -p $(TARGET_RECOVERY_ROOT_OUT)/sbin/
diff --git a/gui/action.cpp b/gui/action.cpp
index a3cf22e..d758430 100644
--- a/gui/action.cpp
+++ b/gui/action.cpp
@@ -496,7 +496,7 @@
{
// Loading the custom theme failed - try loading the stock theme
LOGINFO("Attempting to reload stock theme...\n");
- if (PageManager::ReloadPackage("TWRP", "/res/ui.xml"))
+ if (PageManager::ReloadPackage("TWRP", TWRES "ui.xml"))
{
LOGERR("Failed to load base packages.\n");
ret_val = 1;
diff --git a/gui/gui.cpp b/gui/gui.cpp
index 9b918f0..fecc032 100644
--- a/gui/gui.cpp
+++ b/gui/gui.cpp
@@ -715,11 +715,12 @@
extern "C" int gui_init(void)
{
gr_init();
+ std::string curtain_path = TWRES "images/curtain.jpg";
- if (res_create_surface("/res/images/curtain.jpg", &gCurtain))
+ if (res_create_surface(curtain_path.c_str(), &gCurtain))
{
printf
- ("Unable to locate '/res/images/curtain.jpg'\nDid you set a DEVICE_RESOLUTION in your config files?\n");
+ ("Unable to locate '%s'\nDid you set a DEVICE_RESOLUTION in your config files?\n", curtain_path.c_str());
return -1;
}
@@ -734,9 +735,10 @@
#ifndef TW_OEM_BUILD
int check = 0;
DataManager::GetValue(TW_IS_ENCRYPTED, check);
+
if (check)
{
- if (PageManager::LoadPackage("TWRP", "/res/ui.xml", "decrypt"))
+ if (PageManager::LoadPackage("TWRP", TWRES "ui.xml", "decrypt"))
{
LOGERR("Failed to load base packages.\n");
goto error;
@@ -771,7 +773,7 @@
if (check || PageManager::LoadPackage("TWRP", theme_path, "main"))
{
#endif // ifndef TW_OEM_BUILD
- if (PageManager::LoadPackage("TWRP", "/res/ui.xml", "main"))
+ if (PageManager::LoadPackage("TWRP", TWRES "ui.xml", "main"))
{
LOGERR("Failed to load base packages.\n");
goto error;
@@ -807,7 +809,7 @@
// There is a custom theme, try to load it
if (PageManager::ReloadPackage("TWRP", theme_path)) {
// Custom theme failed to load, try to load stock theme
- if (PageManager::ReloadPackage("TWRP", "/res/ui.xml")) {
+ if (PageManager::ReloadPackage("TWRP", TWRES "ui.xml")) {
LOGERR("Failed to load base packages.\n");
goto error;
}
diff --git a/gui/pages.cpp b/gui/pages.cpp
index 94c351b..8fef7b4 100644
--- a/gui/pages.cpp
+++ b/gui/pages.cpp
@@ -644,11 +644,11 @@
if (!attr)
break;
- LOGINFO("PageSet::CheckInclude loading filename: '%s'\n", filename.c_str());
if (!package) {
// We can try to load the XML directly...
- filename = "/res/";
+ filename = TWRES;
filename += attr->value();
+ LOGINFO("PageSet::CheckInclude loading filename: '%s'\n", filename.c_str());
struct stat st;
if(stat(filename.c_str(),&st) != 0) {
LOGERR("Unable to locate '%s'\n", filename.c_str());
@@ -668,6 +668,7 @@
close(fd);
} else {
filename += attr->value();
+ LOGINFO("PageSet::CheckInclude loading filename: '%s'\n", filename.c_str());
const ZipEntry* ui_xml = mzFindZipEntry(package, filename.c_str());
if (ui_xml == NULL)
{
@@ -1094,7 +1095,7 @@
if (LoadPackage(name, package, "main") != 0)
{
- LOGERR("Failed to load package.\n");
+ LOGERR("Failed to load package '%s'.\n", package.c_str());
mPageSets.insert(std::pair<std::string, PageSet*>(name, set));
return -1;
}
diff --git a/gui/resources.cpp b/gui/resources.cpp
index 0d32cee..d769c17 100644
--- a/gui/resources.cpp
+++ b/gui/resources.cpp
@@ -100,7 +100,7 @@
}
else
{
- file = std::string("/res/fonts/") + file;
+ file = std::string(TWRES "fonts/") + file;
mFont = gr_ttf_loadFont(file.c_str(), size, dpi);
}
}