summaryrefslogtreecommitdiff
path: root/media/jni/android_mtp_MtpServer.cpp
diff options
context:
space:
mode:
authorMike Lockwood <lockwood@android.com>2011-02-18 09:07:14 -0500
committerMike Lockwood <lockwood@android.com>2011-02-22 13:57:23 -0800
commit467ca0de6d7fd55787a37de9dfd7e5325e1c3c6f (patch)
treeb2f83ecf23e9bc3b86eb5e79a78811a12d4dd274 /media/jni/android_mtp_MtpServer.cpp
parent0c4650b4d566f65aa6faa9be45e7f1e29148e1a9 (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.cpp18
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