From 653a1709350a9d66415fcef27d8f157b66a891f5 Mon Sep 17 00:00:00 2001 From: Matt Mower Date: Thu, 16 Feb 2017 10:38:52 -0600 Subject: Tweak MTP startup routine * As a precaution, (non-permanently) disable MTP if TWRP crashes. * Remove a duplicate logging of 'Starting MTP'. * Combine and improve readability of conditions before MTP starts. * Remove unnecessary Disable_MTP() call if conditions unsatisfied. Change-Id: I61ac772fc123da5b84c3061fbcf2116531bc4e2f --- partitionmanager.cpp | 4 +--- 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")); diff --git a/twrp.cpp b/twrp.cpp index 9ea6ba62e..977fea245 100644 --- a/twrp.cpp +++ b/twrp.cpp @@ -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 -- cgit v1.2.3