diff options
Diffstat (limited to 'twrp.cpp')
-rw-r--r-- | twrp.cpp | 23 |
1 files changed, 11 insertions, 12 deletions
@@ -303,26 +303,25 @@ int main(int argc, char **argv) { } #ifdef TW_HAS_MTP - // Enable MTP? char mtp_crash_check[PROPERTY_VALUE_MAX]; property_get("mtp.crash_check", mtp_crash_check, "0"); - if (strcmp(mtp_crash_check, "0") == 0) { + if (DataManager::GetIntValue("tw_mtp_enabled") + && !strcmp(mtp_crash_check, "0") && !crash_counter + && (!DataManager::GetIntValue(TW_IS_ENCRYPTED) || DataManager::GetIntValue(TW_IS_DECRYPTED))) { property_set("mtp.crash_check", "1"); - property_set("sys.usb.config", "adb"); // At first boot, should be adb-only - if (DataManager::GetIntValue("tw_mtp_enabled") == 1 && ((DataManager::GetIntValue(TW_IS_ENCRYPTED) != 0 && DataManager::GetIntValue(TW_IS_DECRYPTED) != 0) || DataManager::GetIntValue(TW_IS_ENCRYPTED) == 0)) { - LOGINFO("Enabling MTP during startup\n"); - if (!PartitionManager.Enable_MTP()) - PartitionManager.Disable_MTP(); - else - gui_msg("mtp_enabled=MTP Enabled"); - } else { + LOGINFO("Starting MTP\n"); + if (!PartitionManager.Enable_MTP()) PartitionManager.Disable_MTP(); - } + else + gui_msg("mtp_enabled=MTP Enabled"); property_set("mtp.crash_check", "0"); - } else { + } else if (strcmp(mtp_crash_check, "0")) { gui_warn("mtp_crash=MTP Crashed, not starting MTP on boot."); DataManager::SetValue("tw_mtp_enabled", 0); PartitionManager.Disable_MTP(); + } else if (crash_counter == 1) { + LOGINFO("TWRP crashed; disabling MTP as a precaution.\n"); + PartitionManager.Disable_MTP(); } #endif |