diff options
Diffstat (limited to 'media')
-rw-r--r-- | media/java/android/mtp/MtpStorage.java | 13 | ||||
-rw-r--r-- | media/jni/android_mtp_MtpServer.cpp | 12 | ||||
-rw-r--r-- | media/mtp/MtpStorage.cpp | 7 | ||||
-rw-r--r-- | media/mtp/MtpStorage.h | 5 |
4 files changed, 30 insertions, 7 deletions
diff --git a/media/java/android/mtp/MtpStorage.java b/media/java/android/mtp/MtpStorage.java index 33146e7..21a18ca 100644 --- a/media/java/android/mtp/MtpStorage.java +++ b/media/java/android/mtp/MtpStorage.java @@ -29,12 +29,15 @@ public class MtpStorage { private final String mPath; private final String mDescription; private final long mReserveSpace; + private final boolean mRemovable; - public MtpStorage(int id, String path, String description, long reserveSpace) { + public MtpStorage(int id, String path, String description, + long reserveSpace, boolean removable) { mStorageId = id; mPath = path; mDescription = description; mReserveSpace = reserveSpace; + mRemovable = removable; } /** @@ -86,4 +89,12 @@ public class MtpStorage { return mReserveSpace; } + /** + * Returns true if the storage is removable. + * + * @return is removable + */ + public final boolean isRemovable() { + return mRemovable; + } } diff --git a/media/jni/android_mtp_MtpServer.cpp b/media/jni/android_mtp_MtpServer.cpp index c55189f..4f6bb15 100644 --- a/media/jni/android_mtp_MtpServer.cpp +++ b/media/jni/android_mtp_MtpServer.cpp @@ -47,6 +47,7 @@ static jfieldID field_MtpStorage_storageId; static jfieldID field_MtpStorage_path; static jfieldID field_MtpStorage_description; static jfieldID field_MtpStorage_reserveSpace; +static jfieldID field_MtpStorage_removable; static Mutex sMutex; @@ -245,11 +246,13 @@ android_mtp_MtpServer_add_storage(JNIEnv *env, jobject thiz, jobject jstorage) jstring path = (jstring)env->GetObjectField(jstorage, field_MtpStorage_path); jstring description = (jstring)env->GetObjectField(jstorage, field_MtpStorage_description); jlong reserveSpace = env->GetLongField(jstorage, field_MtpStorage_reserveSpace); + jboolean removable = env->GetBooleanField(jstorage, field_MtpStorage_removable); const char *pathStr = env->GetStringUTFChars(path, NULL); const char *descriptionStr = env->GetStringUTFChars(description, NULL); - MtpStorage* storage = new MtpStorage(storageID, pathStr, descriptionStr, reserveSpace); + MtpStorage* storage = new MtpStorage(storageID, pathStr, descriptionStr, + reserveSpace, removable); thread->addStorage(storage); env->ReleaseStringUTFChars(path, pathStr); @@ -318,7 +321,12 @@ int register_android_mtp_MtpServer(JNIEnv *env) } field_MtpStorage_reserveSpace = env->GetFieldID(clazz, "mReserveSpace", "J"); if (field_MtpStorage_reserveSpace == NULL) { - LOGE("Can't find MtpStorage.mStorageId"); + LOGE("Can't find MtpStorage.mReserveSpace"); + return -1; + } + field_MtpStorage_removable = env->GetFieldID(clazz, "mRemovable", "Z"); + if (field_MtpStorage_removable == NULL) { + LOGE("Can't find MtpStorage.mRemovable"); return -1; } clazz_MtpStorage = (jclass)env->NewGlobalRef(clazz); diff --git a/media/mtp/MtpStorage.cpp b/media/mtp/MtpStorage.cpp index fff0b5f..fef8066 100644 --- a/media/mtp/MtpStorage.cpp +++ b/media/mtp/MtpStorage.cpp @@ -33,12 +33,13 @@ namespace android { MtpStorage::MtpStorage(MtpStorageID id, const char* filePath, - const char* description, uint64_t reserveSpace) + const char* description, uint64_t reserveSpace, bool removable) : mStorageID(id), mFilePath(filePath), mDescription(description), mMaxCapacity(0), - mReserveSpace(reserveSpace) + mReserveSpace(reserveSpace), + mRemovable(removable) { LOGV("MtpStorage id: %d path: %s\n", id, filePath); } @@ -47,7 +48,7 @@ MtpStorage::~MtpStorage() { } int MtpStorage::getType() const { - return MTP_STORAGE_FIXED_RAM; + return (mRemovable ? MTP_STORAGE_REMOVABLE_RAM : MTP_STORAGE_FIXED_RAM); } int MtpStorage::getFileSystemType() const { diff --git a/media/mtp/MtpStorage.h b/media/mtp/MtpStorage.h index d6ad25f..3e4f40d 100644 --- a/media/mtp/MtpStorage.h +++ b/media/mtp/MtpStorage.h @@ -33,10 +33,12 @@ private: uint64_t mMaxCapacity; // amount of free space to leave unallocated uint64_t mReserveSpace; + bool mRemovable; public: MtpStorage(MtpStorageID id, const char* filePath, - const char* description, uint64_t reserveSpace); + const char* description, uint64_t reserveSpace, + bool removable); virtual ~MtpStorage(); inline MtpStorageID getStorageID() const { return mStorageID; } @@ -47,6 +49,7 @@ public: uint64_t getFreeSpace(); const char* getDescription() const; inline const char* getPath() const { return (const char *)mFilePath; } + inline bool isRemovable() const { return mRemovable; } }; }; // namespace android |