From 9e0593eaf6defb15761f41246093c0d3661b140d Mon Sep 17 00:00:00 2001 From: that Date: Wed, 8 Oct 2014 00:01:24 +0200 Subject: mtp: cleanup, fixes and performance improvements - use std::map instead of linked list - read directories on demand - fix writing zip files to storage root - fix creating directories - lots of minor fixes - simplify generation of storage IDs and make them spec compliant Change-Id: I2137c27549ddbdc58466f2e3aeda464fac70a3c5 --- partitionmanager.cpp | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) (limited to 'partitionmanager.cpp') diff --git a/partitionmanager.cpp b/partitionmanager.cpp index 0063ff3ea..b2d7b4e02 100644 --- a/partitionmanager.cpp +++ b/partitionmanager.cpp @@ -59,7 +59,6 @@ extern "C" { extern bool datamedia; TWPartitionManager::TWPartitionManager(void) { - mtpid = 100; mtp_was_enabled = false; } @@ -81,7 +80,7 @@ int TWPartitionManager::Process_Fstab(string Fstab_Filename, bool Display_Error) if (fstab_line[strlen(fstab_line) - 1] != '\n') fstab_line[strlen(fstab_line)] = '\n'; - TWPartition* partition = new TWPartition(&mtpid); + TWPartition* partition = new TWPartition(); string line = fstab_line; memset(fstab_line, 0, sizeof(fstab_line)); @@ -108,7 +107,7 @@ int TWPartitionManager::Process_Fstab(string Fstab_Filename, bool Display_Error) if (Dat) { LOGINFO("Using automatic handling for /data/media emulated storage device.\n"); datamedia = true; - Dat->Setup_Data_Media(++mtpid); + Dat->Setup_Data_Media(); settings_partition = Dat; } } @@ -283,8 +282,6 @@ void TWPartitionManager::Output_Partition(TWPartition* Part) { printf(" Backup_Method: %s\n", back_meth.c_str()); if (Part->Mount_Flags || !Part->Mount_Options.empty()) printf(" Mount_Flags=0x%8x, Mount_Options=%s\n", Part->Mount_Flags, Part->Mount_Options.c_str()); - if (Part->mtpid) - printf(" MTP Storage ID: %i\n", Part->mtpid); printf("\n"); } @@ -2187,10 +2184,12 @@ bool TWPartitionManager::Enable_MTP(void) { * twrp set tw_mtp_debug 1 */ twrpMtp *mtp = new twrpMtp(DataManager::GetIntValue("tw_mtp_debug")); + unsigned int storageid = 1 << 16; // upper 16 bits are for physical storage device, we pretend to have only one for (iter = Partitions.begin(); iter != Partitions.end(); iter++) { if ((*iter)->Is_Storage && (*iter)->Is_Present && (*iter)->Mount(false)) { - printf("twrp mtpid: %d\n", (*iter)->mtpid); - mtp->addStorage((*iter)->Storage_Name, (*iter)->Storage_Path, (*iter)->mtpid); + ++storageid; + printf("twrp addStorage %s, mtpstorageid: %u\n", (*iter)->Storage_Path.c_str(), storageid); + mtp->addStorage((*iter)->Storage_Name, (*iter)->Storage_Path, storageid); count++; } } -- cgit v1.2.3