Skip to content

Commit

Permalink
it seems this fix works
Browse files Browse the repository at this point in the history
  • Loading branch information
swittk committed Aug 20, 2022
1 parent 203801a commit d430626
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 14 deletions.
19 changes: 16 additions & 3 deletions android/cpp-adapter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,24 @@ Java_com_reactnativelua_LuaModule_nativeMultiply(JNIEnv *env, jclass type, jint

extern "C"
JNIEXPORT void JNICALL
Java_com_reactnativelua_LuaModule_initialize(JNIEnv *env, jclass clazz, jlong jsi_runtime_pointer, jobject jsCallInvokerHolder) {
Java_com_reactnativelua_LuaModule_initialize(JNIEnv *env, jclass clazz, jlong jsi_runtime_pointer, jobject jsCallInvokerHolderImpl) {
JavaVM *jvm;
env->GetJavaVM(&jvm);
facebook::react::CallInvokerHolder *holder = (facebook::react::CallInvokerHolder *)jsCallInvokerHolder;
auto jsCallInvoker = holder->getCallInvoker();
// facebook::react::CallInvokerHolder *holder = (facebook::react::CallInvokerHolder *)jsCallInvokerHolder;
// auto jsCallInvoker = holder->getCallInvoker();

// This blob of code from https://gist.github.com/VolkerLieber/fd7f5b95d8ec0b64c61f689d4c8a2d76 thanks to @VolkerLieber
jclass CallInvokerHolderImplClass = env->GetObjectClass(jsCallInvokerHolderImpl);
jfieldID mHybridDataField = env->GetFieldID(CallInvokerHolderImplClass, "mHybridData", "Lcom/facebook/jni/HybridData;");
jobject mHybridData = env->GetObjectField(jsCallInvokerHolderImpl, mHybridDataField);
jclass HybridDataClass = env->GetObjectClass(mHybridData);
jfieldID mDestructorField = env->GetFieldID(HybridDataClass, "mDestructor", "Lcom/facebook/jni/HybridData$Destructor;");
jobject mDestructor = env->GetObjectField(mHybridData, mDestructorField);
jclass DestructorClass = env->GetObjectClass(mDestructor);
jfieldID mNativePointerField = env->GetFieldID(DestructorClass, "mNativePointer", "J");
jlong mNativePointer = env->GetLongField(mDestructor, mNativePointerField);
std::shared_ptr<facebook::react::CallInvoker> jsCallInvoker = ((facebook::react::CallInvokerHolder*)mNativePointer)->getCallInvoker();

SKRNNativeLua::install(*reinterpret_cast<facebook::jsi::Runtime *>(jsi_runtime_pointer), jsCallInvoker);
}
extern "C"
Expand Down
22 changes: 11 additions & 11 deletions example/src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ export default function App() {
// Alert.alert('Error', errStr);
// }
const interpreter = getInterpreter();
if (Platform.OS == 'ios') {
// if (Platform.OS == 'ios') {
// if (true) {
interpreter.dostringasync(interpText, (result) => {
console.log('exec result', result);
Expand All @@ -118,16 +118,16 @@ export default function App() {
Alert.alert('Error', errStr);
}
});
}
else {
let result = interpreter.dostring(interpText);
console.log('exec result', result);
if (result != 0) {
const errStr = interpreter.getLatestError();
console.log('exec error', errStr);
Alert.alert('Error', errStr);
}
}
// }
// else {
// let result = interpreter.dostring(interpText);
// console.log('exec result', result);
// if (result != 0) {
// const errStr = interpreter.getLatestError();
// console.log('exec error', errStr);
// Alert.alert('Error', errStr);
// }
// }
setInterpText(undefined);
}} />
<KeyboardAvoidingView style={{ flex: 1 }}>
Expand Down

0 comments on commit d430626

Please sign in to comment.