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

Commit 03c86602 authored by Yong WU's avatar Yong WU Committed by Calin Juravle
Browse files

Integrate NativeActivity with NativeBridge interfaces

Bug: 16884833

Change-Id: I73aab8e212860ba5aee9444d801806d3da326a41
parent 219b5356
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) {