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
diff --git a/twrp.cpp b/twrp.cpp
index 9ea6ba6..977fea2 100644
--- a/twrp.cpp
+++ b/twrp.cpp
@@ -303,25 +303,25 @@
 	}
 
 #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