diff options
-rw-r--r-- | partitionmanager.cpp | 4 | ||||
-rw-r--r-- | twrp.cpp | 22 |
2 files changed, 12 insertions, 14 deletions
diff --git a/partitionmanager.cpp b/partitionmanager.cpp index ea8693f52..908730e57 100644 --- a/partitionmanager.cpp +++ b/partitionmanager.cpp @@ -2081,8 +2081,6 @@ bool TWPartitionManager::Enable_MTP(void) { gui_err("mtp_already_enabled=MTP already enabled"); return true; } - //Launch MTP Responder - LOGINFO("Starting MTP\n"); int mtppipe[2]; @@ -2105,7 +2103,7 @@ bool TWPartitionManager::Enable_MTP(void) { TWFunc::write_file("/sys/class/android_usb/android0/idProduct", productstr); property_set("sys.usb.config", "mtp,adb"); } - /* To enable MTP debug, use the twrp command line feature to + /* To enable MTP debug, use the twrp command line feature: * twrp set tw_mtp_debug 1 */ twrpMtp *mtp = new twrpMtp(DataManager::GetIntValue("tw_mtp_debug")); @@ -303,25 +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"); - 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 |