-
Notifications
You must be signed in to change notification settings - Fork 4.7k
/
JniSkiaManager.cpp
44 lines (35 loc) · 1.18 KB
/
JniSkiaManager.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include "JniSkiaManager.h"
#include <android/log.h>
#include <jni.h>
#include <string>
#include <utility>
#include "JniSkiaDrawView.h"
#include <RNSkManager.h>
namespace RNSkia {
using namespace facebook;
// JNI binding
void JniSkiaManager::registerNatives() {
registerHybrid({
makeNativeMethod("initHybrid", JniSkiaManager::initHybrid),
makeNativeMethod("initializeRuntime", JniSkiaManager::initializeRuntime),
makeNativeMethod("invalidate", JniSkiaManager::invalidate),
});
}
// JNI init
jni::local_ref<jni::HybridClass<JniSkiaManager>::jhybriddata> JniSkiaManager::initHybrid(
jni::alias_ref<jhybridobject> jThis,
jlong jsContext,
JSCallInvokerHolder jsCallInvokerHolder,
JavaPlatformContext skiaContext) {
// cast from JNI hybrid objects to C++ instances
return makeCxxInstance(
jThis,
reinterpret_cast<jsi::Runtime *>(jsContext),
jsCallInvokerHolder->cthis()->getCallInvoker(),
skiaContext->cthis());
}
void JniSkiaManager::initializeRuntime() {
// Create the cross platform skia manager
_skManager = std::make_shared<RNSkManager>(_jsRuntime, _jsCallInvoker, _context);
}
} // namespace RNSkia