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

Commit 508e768d authored by Calin Juravle's avatar Calin Juravle Committed by Gerrit Code Review
Browse files

Merge "Integrate NativeActivity with NativeBridge interfaces"

parents 4179e889 03c86602
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -209,7 +209,8 @@ LOCAL_SHARED_LIBRARIES := \
	libjpeg \
	libusbhost \
	libharfbuzz_ng \
	libz
	libz \
	libnativebridge

ifeq ($(USE_OPENGL_RENDERER),true)
	LOCAL_SHARED_LIBRARIES += libhwui
+20 −6
Original line number Diff line number Diff line
@@ -38,6 +38,8 @@
#include "android_view_InputChannel.h"
#include "android_view_KeyEvent.h"

#include "nativebridge/native_bridge.h"

#define LOG_TRACE(...)
//#define LOG_TRACE(...) ALOG(LOG_DEBUG, LOG_TAG, __VA_ARGS__)

@@ -251,15 +253,27 @@ loadNativeCode_native(JNIEnv* env, jobject clazz, jstring path, jstring funcName

    const char* pathStr = env->GetStringUTFChars(path, NULL);
    NativeCode* code = NULL;
    bool needNativeBridge = false;

    void* handle = dlopen(pathStr, RTLD_LAZY);
    
    if (handle == NULL) {
        if (NativeBridgeIsSupported(pathStr)) {
            handle = NativeBridgeLoadLibrary(pathStr, RTLD_LAZY);
            needNativeBridge = true;
        }
    }
    env->ReleaseStringUTFChars(path, pathStr);

    if (handle != NULL) {
        void* funcPtr = NULL;
        const char* funcStr = env->GetStringUTFChars(funcName, NULL);
        code = new NativeCode(handle, (ANativeActivity_createFunc*)
                dlsym(handle, funcStr));
        if (needNativeBridge) {
            funcPtr = NativeBridgeGetTrampoline(handle, funcStr, NULL, 0);
        } else {
            funcPtr = dlsym(handle, funcStr);
        }

        code = new NativeCode(handle, (ANativeActivity_createFunc*)funcPtr);
        env->ReleaseStringUTFChars(funcName, funcStr);

        if (code->createActivityFunc == NULL) {