Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5747c2b8 authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "Support scanDirectories with JNI callback function"

parents d5410ca5 b4aa69fd
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -421,6 +421,12 @@ public class MtpDatabase implements AutoCloseable {
        }
    }

    private void doScanDirectory(String path) {
        String[] scanPath;
        scanPath = new String[] { path };
        mMediaScanner.scanDirectories(scanPath);
    }

    private Cursor createObjectQuery(int storageID, int format, int parent) throws RemoteException {
        String where;
        String[] whereArgs;
+18 −0
Original line number Diff line number Diff line
@@ -55,6 +55,7 @@ using namespace android;

static jmethodID method_beginSendObject;
static jmethodID method_endSendObject;
static jmethodID method_doScanDirectory;
static jmethodID method_getObjectList;
static jmethodID method_getNumObjects;
static jmethodID method_getSupportedPlaybackFormats;
@@ -119,6 +120,8 @@ public:
                                            MtpObjectFormat format,
                                            bool succeeded);

    virtual void                    doScanDirectory(const char* path);

    virtual MtpObjectHandleList*    getObjectList(MtpStorageID storageID,
                                    MtpObjectFormat format,
                                    MtpObjectHandle parent);
@@ -265,6 +268,16 @@ void MyMtpDatabase::endSendObject(const char* path, MtpObjectHandle handle,
    checkAndClearExceptionFromCallback(env, __FUNCTION__);
}

void MyMtpDatabase::doScanDirectory(const char* path) {
    JNIEnv* env = AndroidRuntime::getJNIEnv();
    jstring pathStr = env->NewStringUTF(path);
    env->CallVoidMethod(mDatabase, method_doScanDirectory, pathStr);

    if (pathStr)
        env->DeleteLocalRef(pathStr);
    checkAndClearExceptionFromCallback(env, __FUNCTION__);
}

MtpObjectHandleList* MyMtpDatabase::getObjectList(MtpStorageID storageID,
                                                  MtpObjectFormat format,
                                                  MtpObjectHandle parent) {
@@ -1308,6 +1321,11 @@ int register_android_mtp_MtpDatabase(JNIEnv *env)
        ALOGE("Can't find endSendObject");
        return -1;
    }
    method_doScanDirectory = env->GetMethodID(clazz, "doScanDirectory", "(Ljava/lang/String;)V");
    if (method_doScanDirectory == NULL) {
        ALOGE("Can't find doScanDirectory");
        return -1;
    }
    method_getObjectList = env->GetMethodID(clazz, "getObjectList", "(III)[I");
    if (method_getObjectList == NULL) {
        ALOGE("Can't find getObjectList");