diff options
author | Mike Lockwood <lockwood@android.com> | 2011-02-18 09:07:14 -0500 |
---|---|---|
committer | Mike Lockwood <lockwood@android.com> | 2011-02-22 13:57:23 -0800 |
commit | 467ca0de6d7fd55787a37de9dfd7e5325e1c3c6f (patch) | |
tree | b2f83ecf23e9bc3b86eb5e79a78811a12d4dd274 /media/jni/android_mtp_MtpServer.cpp | |
parent | 0c4650b4d566f65aa6faa9be45e7f1e29148e1a9 (diff) |
MTP: Add support for dynamically adding and removing storage units
BUG: 3402847
Change-Id: I7da266061d949abcb6bb11c6faaa47b5e4a2a977
Diffstat (limited to 'media/jni/android_mtp_MtpServer.cpp')
-rw-r--r-- | media/jni/android_mtp_MtpServer.cpp | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/media/jni/android_mtp_MtpServer.cpp b/media/jni/android_mtp_MtpServer.cpp index 3883fb2dcd7a..b27441fb681c 100644 --- a/media/jni/android_mtp_MtpServer.cpp +++ b/media/jni/android_mtp_MtpServer.cpp @@ -35,6 +35,7 @@ #include "private/android_filesystem_config.h" #include "MtpServer.h" +#include "MtpStorage.h" using namespace android; @@ -56,22 +57,24 @@ class MtpThread : public Thread { private: MtpDatabase* mDatabase; MtpServer* mServer; - String8 mStoragePath; - uint64_t mReserveSpace; + MtpStorage* mStorage; Mutex mMutex; bool mUsePtp; int mFd; public: - MtpThread(MtpDatabase* database, const char* storagePath, uint64_t reserveSpace) + MtpThread(MtpDatabase* database, MtpStorage* storage) : mDatabase(database), mServer(NULL), - mStoragePath(storagePath), - mReserveSpace(reserveSpace), + mStorage(storage), mFd(-1) { } + virtual ~MtpThread() { + delete mStorage; + } + void setPtpMode(bool usePtp) { mMutex.lock(); mUsePtp = usePtp; @@ -86,7 +89,7 @@ public: (mUsePtp ? MTP_INTERFACE_MODE_PTP : MTP_INTERFACE_MODE_MTP)); mServer = new MtpServer(mFd, mDatabase, AID_MEDIA_RW, 0664, 0775); - mServer->addStorage(mStoragePath, mReserveSpace); + mServer->addStorage(mStorage); mMutex.unlock(); mServer->run(); @@ -137,7 +140,8 @@ android_mtp_MtpServer_setup(JNIEnv *env, jobject thiz, jobject javaDatabase, const char *storagePathStr = env->GetStringUTFChars(storagePath, NULL); // create the thread and assign it to the smart pointer - sThread = new MtpThread(database, storagePathStr, reserveSpace); + MtpStorage* storage = new MtpStorage(MTP_FIRST_STORAGE_ID, storagePathStr, reserveSpace); + sThread = new MtpThread(database, storage); env->ReleaseStringUTFChars(storagePath, storagePathStr); #endif |