@shopify/react-native-skia 1.5.8 → 1.5.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. package/android/CMakeLists.txt +0 -1
  2. package/android/cpp/jni/JniPlatformContext.cpp +0 -49
  3. package/android/cpp/jni/include/JniPlatformContext.h +1 -17
  4. package/android/cpp/jni/include/JniSkiaBaseView.h +0 -2
  5. package/android/cpp/jni/include/JniSkiaDomView.h +0 -3
  6. package/android/cpp/jni/include/JniSkiaManager.h +0 -2
  7. package/android/cpp/jni/include/JniSkiaPictureView.h +0 -3
  8. package/android/cpp/rnskia-android/MainThreadDispatcher.h +69 -0
  9. package/android/cpp/rnskia-android/RNSkAndroidPlatformContext.h +4 -11
  10. package/android/cpp/rnskia-android/RNSkAndroidView.h +3 -13
  11. package/android/cpp/rnskia-android/RNSkOpenGLCanvasProvider.cpp +0 -1
  12. package/android/src/main/java/com/shopify/reactnative/skia/PlatformContext.java +0 -85
  13. package/android/src/main/java/com/shopify/reactnative/skia/RNSkiaModule.java +1 -21
  14. package/android/src/main/java/com/shopify/reactnative/skia/SkiaManager.java +0 -4
  15. package/android/src/paper/java/com/facebook/react/viewmanagers/SkiaDomViewManagerDelegate.java +1 -4
  16. package/android/src/paper/java/com/facebook/react/viewmanagers/SkiaDomViewManagerInterface.java +0 -1
  17. package/cpp/rnskia/RNSkManager.cpp +2 -3
  18. package/cpp/rnskia/RNSkPlatformContext.h +2 -114
  19. package/cpp/rnskia/RNSkView.h +16 -75
  20. package/ios/RNSkia-iOS/RNSkiOSPlatformContext.h +1 -10
  21. package/ios/RNSkia-iOS/RNSkiOSPlatformContext.mm +0 -16
  22. package/ios/RNSkia-iOS/SkiaDomView.mm +0 -1
  23. package/ios/RNSkia-iOS/SkiaDomViewManager.mm +0 -6
  24. package/ios/RNSkia-iOS/SkiaPictureView.mm +0 -1
  25. package/ios/RNSkia-iOS/SkiaPictureViewManager.mm +0 -6
  26. package/ios/RNSkia-iOS/SkiaUIView.h +0 -1
  27. package/ios/RNSkia-iOS/SkiaUIView.mm +1 -14
  28. package/lib/commonjs/renderer/Canvas.d.ts +1 -0
  29. package/lib/commonjs/renderer/Canvas.js +5 -5
  30. package/lib/commonjs/renderer/Canvas.js.map +1 -1
  31. package/lib/commonjs/specs/SkiaPictureViewNativeComponent.d.ts +0 -1
  32. package/lib/commonjs/specs/SkiaPictureViewNativeComponent.js.map +1 -1
  33. package/lib/commonjs/views/SkiaBaseWebView.d.ts +1 -12
  34. package/lib/commonjs/views/SkiaBaseWebView.js +1 -19
  35. package/lib/commonjs/views/SkiaBaseWebView.js.map +1 -1
  36. package/lib/commonjs/views/SkiaDomView.d.ts +8 -1
  37. package/lib/commonjs/views/SkiaDomView.js +14 -2
  38. package/lib/commonjs/views/SkiaDomView.js.map +1 -1
  39. package/lib/commonjs/views/SkiaDomView.web.d.ts +3 -3
  40. package/lib/commonjs/views/SkiaDomView.web.js.map +1 -1
  41. package/lib/commonjs/views/SkiaJSDomView.d.ts +12 -6
  42. package/lib/commonjs/views/SkiaJSDomView.js +12 -3
  43. package/lib/commonjs/views/SkiaJSDomView.js.map +1 -1
  44. package/lib/commonjs/views/SkiaPictureView.d.ts +8 -1
  45. package/lib/commonjs/views/SkiaPictureView.js +14 -1
  46. package/lib/commonjs/views/SkiaPictureView.js.map +1 -1
  47. package/lib/commonjs/views/SkiaPictureView.web.d.ts +3 -3
  48. package/lib/commonjs/views/SkiaPictureView.web.js.map +1 -1
  49. package/lib/commonjs/views/types.d.ts +2 -12
  50. package/lib/commonjs/views/types.js.map +1 -1
  51. package/lib/module/renderer/Canvas.d.ts +1 -0
  52. package/lib/module/renderer/Canvas.js +5 -5
  53. package/lib/module/renderer/Canvas.js.map +1 -1
  54. package/lib/module/specs/SkiaPictureViewNativeComponent.d.ts +0 -1
  55. package/lib/module/specs/SkiaPictureViewNativeComponent.js.map +1 -1
  56. package/lib/module/views/SkiaBaseWebView.d.ts +1 -12
  57. package/lib/module/views/SkiaBaseWebView.js +1 -19
  58. package/lib/module/views/SkiaBaseWebView.js.map +1 -1
  59. package/lib/module/views/SkiaDomView.d.ts +8 -1
  60. package/lib/module/views/SkiaDomView.js +14 -2
  61. package/lib/module/views/SkiaDomView.js.map +1 -1
  62. package/lib/module/views/SkiaDomView.web.d.ts +3 -3
  63. package/lib/module/views/SkiaDomView.web.js.map +1 -1
  64. package/lib/module/views/SkiaJSDomView.d.ts +12 -6
  65. package/lib/module/views/SkiaJSDomView.js +12 -3
  66. package/lib/module/views/SkiaJSDomView.js.map +1 -1
  67. package/lib/module/views/SkiaPictureView.d.ts +8 -1
  68. package/lib/module/views/SkiaPictureView.js +14 -1
  69. package/lib/module/views/SkiaPictureView.js.map +1 -1
  70. package/lib/module/views/SkiaPictureView.web.d.ts +3 -3
  71. package/lib/module/views/SkiaPictureView.web.js.map +1 -1
  72. package/lib/module/views/types.d.ts +2 -12
  73. package/lib/module/views/types.js.map +1 -1
  74. package/lib/typescript/lib/commonjs/views/SkiaBaseWebView.d.ts +0 -11
  75. package/lib/typescript/lib/commonjs/views/SkiaDomView.d.ts +3 -0
  76. package/lib/typescript/lib/commonjs/views/SkiaJSDomView.d.ts +2 -0
  77. package/lib/typescript/lib/commonjs/views/SkiaPictureView.d.ts +3 -0
  78. package/lib/typescript/lib/module/views/SkiaBaseWebView.d.ts +0 -11
  79. package/lib/typescript/lib/module/views/SkiaDomView.d.ts +3 -0
  80. package/lib/typescript/lib/module/views/SkiaJSDomView.d.ts +2 -0
  81. package/lib/typescript/lib/module/views/SkiaPictureView.d.ts +3 -0
  82. package/lib/typescript/src/renderer/Canvas.d.ts +1 -0
  83. package/lib/typescript/src/specs/SkiaPictureViewNativeComponent.d.ts +0 -1
  84. package/lib/typescript/src/views/SkiaBaseWebView.d.ts +1 -12
  85. package/lib/typescript/src/views/SkiaDomView.d.ts +8 -1
  86. package/lib/typescript/src/views/SkiaDomView.web.d.ts +3 -3
  87. package/lib/typescript/src/views/SkiaJSDomView.d.ts +12 -6
  88. package/lib/typescript/src/views/SkiaPictureView.d.ts +8 -1
  89. package/lib/typescript/src/views/SkiaPictureView.web.d.ts +3 -3
  90. package/lib/typescript/src/views/types.d.ts +2 -12
  91. package/package.json +1 -1
  92. package/src/renderer/Canvas.tsx +4 -3
  93. package/src/specs/SkiaPictureViewNativeComponent.ts +0 -1
  94. package/src/views/SkiaBaseWebView.tsx +3 -19
  95. package/src/views/SkiaDomView.tsx +23 -4
  96. package/src/views/SkiaDomView.web.tsx +3 -3
  97. package/src/views/SkiaJSDomView.tsx +30 -9
  98. package/src/views/SkiaPictureView.tsx +22 -2
  99. package/src/views/SkiaPictureView.web.tsx +3 -3
  100. package/src/views/types.ts +2 -13
  101. package/cpp/rnskia/RNSkDispatchQueue.cpp +0 -73
  102. package/cpp/rnskia/RNSkDispatchQueue.h +0 -49
  103. package/ios/RNSkia-iOS/DisplayLink.h +0 -17
  104. package/ios/RNSkia-iOS/DisplayLink.mm +0 -41
@@ -87,7 +87,6 @@ add_library(
87
87
 
88
88
  "${PROJECT_SOURCE_DIR}/../cpp/rnskia/RNSkManager.cpp"
89
89
  "${PROJECT_SOURCE_DIR}/../cpp/rnskia/RNSkDomView.cpp"
90
- "${PROJECT_SOURCE_DIR}/../cpp/rnskia/RNSkDispatchQueue.cpp"
91
90
 
92
91
  "${PROJECT_SOURCE_DIR}/../cpp/rnskia/dom/base/DrawingContext.cpp"
93
92
  "${PROJECT_SOURCE_DIR}/../cpp/rnskia/dom/base/ConcatablePaint.cpp"
@@ -63,10 +63,6 @@ using TSelf = jni::local_ref<JniPlatformContext::jhybriddata>;
63
63
  void JniPlatformContext::registerNatives() {
64
64
  registerHybrid({
65
65
  makeNativeMethod("initHybrid", JniPlatformContext::initHybrid),
66
- makeNativeMethod("notifyDrawLoop",
67
- JniPlatformContext::notifyDrawLoopExternal),
68
- makeNativeMethod("notifyTaskReady",
69
- JniPlatformContext::notifyTaskReadyExternal),
70
66
  });
71
67
  }
72
68
 
@@ -134,51 +130,6 @@ sk_sp<SkImage> JniPlatformContext::takeScreenshotFromViewTag(size_t tag) {
134
130
  return skImage;
135
131
  }
136
132
 
137
- void JniPlatformContext::startDrawLoop() {
138
- jni::ThreadScope ts;
139
- // Start drawing loop
140
- static auto method =
141
- javaPart_->getClass()->getMethod<void(void)>("beginDrawLoop");
142
- method(javaPart_.get());
143
- }
144
-
145
- void JniPlatformContext::stopDrawLoop() {
146
- jni::ThreadScope ts;
147
- // Stop drawing loop
148
- static auto method =
149
- javaPart_->getClass()->getMethod<void(void)>("endDrawLoop");
150
- method(javaPart_.get());
151
- }
152
-
153
- void JniPlatformContext::notifyDrawLoopExternal() {
154
- jni::ThreadScope ts;
155
- _onNotifyDrawLoop();
156
- }
157
-
158
- void JniPlatformContext::runTaskOnMainThread(std::function<void()> task) {
159
- _taskMutex->lock();
160
- _taskCallbacks.push(task);
161
- _taskMutex->unlock();
162
-
163
- // Notify Java that task is ready
164
- static auto method = javaPart_->getClass()->getMethod<void(void)>(
165
- "notifyTaskReadyOnMainThread");
166
- method(javaPart_.get());
167
- }
168
-
169
- void JniPlatformContext::notifyTaskReadyExternal() {
170
- jni::ThreadScope ts;
171
- _taskMutex->lock();
172
- auto task = _taskCallbacks.front();
173
- if (task != nullptr) {
174
- _taskCallbacks.pop();
175
- _taskMutex->unlock();
176
- task();
177
- } else {
178
- _taskMutex->unlock();
179
- }
180
- }
181
-
182
133
  void JniPlatformContext::performStreamOperation(
183
134
  const std::string &sourceUri,
184
135
  const std::function<void(std::unique_ptr<SkStreamAsset>)> &op) {
@@ -33,11 +33,6 @@ public:
33
33
 
34
34
  void raiseError(const std::exception &err);
35
35
 
36
- void startDrawLoop();
37
- void stopDrawLoop();
38
-
39
- void notifyDrawLoopExternal();
40
-
41
36
  void notifyTaskReadyExternal();
42
37
 
43
38
  void runTaskOnMainThread(std::function<void()> task);
@@ -46,10 +41,6 @@ public:
46
41
 
47
42
  sk_sp<SkImage> takeScreenshotFromViewTag(size_t tag);
48
43
 
49
- void setOnNotifyDrawLoop(const std::function<void(void)> &callback) {
50
- _onNotifyDrawLoop = callback;
51
- }
52
-
53
44
  jni::global_ref<jobject> createVideo(const std::string &url);
54
45
 
55
46
  private:
@@ -58,16 +49,9 @@ private:
58
49
 
59
50
  float _pixelDensity;
60
51
 
61
- std::function<void(void)> _onNotifyDrawLoop;
62
-
63
- std::queue<std::function<void()>> _taskCallbacks;
64
-
65
- std::shared_ptr<std::mutex> _taskMutex;
66
-
67
52
  explicit JniPlatformContext(
68
53
  jni::alias_ref<JniPlatformContext::jhybridobject> jThis,
69
54
  const float pixelDensity)
70
- : _taskMutex(std::make_shared<std::mutex>()),
71
- javaPart_(jni::make_global(jThis)), _pixelDensity(pixelDensity) {}
55
+ : javaPart_(jni::make_global(jThis)), _pixelDensity(pixelDensity) {}
72
56
  };
73
57
  } // namespace RNSkia
@@ -39,8 +39,6 @@ protected:
39
39
 
40
40
  virtual void surfaceDestroyed() { _skiaAndroidView->surfaceDestroyed(); }
41
41
 
42
- virtual void setMode(std::string mode) { _skiaAndroidView->setMode(mode); }
43
-
44
42
  virtual void setDebugMode(bool show) {
45
43
  _skiaAndroidView->setShowDebugInfo(show);
46
44
  }
@@ -40,7 +40,6 @@ public:
40
40
  makeNativeMethod("surfaceDestroyed", JniSkiaDomView::surfaceDestroyed),
41
41
  makeNativeMethod("surfaceSizeChanged",
42
42
  JniSkiaDomView::surfaceSizeChanged),
43
- makeNativeMethod("setMode", JniSkiaDomView::setMode),
44
43
  makeNativeMethod("setDebugMode", JniSkiaDomView::setDebugMode),
45
44
  makeNativeMethod("registerView", JniSkiaDomView::registerView),
46
45
  makeNativeMethod("unregisterView", JniSkiaDomView::unregisterView)});
@@ -57,8 +56,6 @@ protected:
57
56
 
58
57
  void surfaceDestroyed() override { JniSkiaBaseView::surfaceDestroyed(); }
59
58
 
60
- void setMode(std::string mode) override { JniSkiaBaseView::setMode(mode); }
61
-
62
59
  void setDebugMode(bool show) override { JniSkiaBaseView::setDebugMode(show); }
63
60
 
64
61
  void registerView(int nativeId) override {
@@ -53,8 +53,6 @@ public:
53
53
  std::shared_ptr<RNSkManager> getSkiaManager() { return _skManager; }
54
54
 
55
55
  void invalidate() {
56
- _context->stopDrawLoop();
57
- _context->notifyDrawLoop(true);
58
56
  _skManager = nullptr;
59
57
  _context = nullptr;
60
58
  }
@@ -41,7 +41,6 @@ public:
41
41
  JniSkiaPictureView::surfaceDestroyed),
42
42
  makeNativeMethod("surfaceSizeChanged",
43
43
  JniSkiaPictureView::surfaceSizeChanged),
44
- makeNativeMethod("setMode", JniSkiaPictureView::setMode),
45
44
  makeNativeMethod("setDebugMode", JniSkiaPictureView::setDebugMode),
46
45
  makeNativeMethod("registerView", JniSkiaPictureView::registerView),
47
46
  makeNativeMethod("unregisterView",
@@ -59,8 +58,6 @@ protected:
59
58
 
60
59
  void surfaceDestroyed() override { JniSkiaBaseView::surfaceDestroyed(); }
61
60
 
62
- void setMode(std::string mode) override { JniSkiaBaseView::setMode(mode); }
63
-
64
61
  void setDebugMode(bool show) override { JniSkiaBaseView::setDebugMode(show); }
65
62
 
66
63
  void registerView(int nativeId) override {
@@ -0,0 +1,69 @@
1
+ #pragma once
2
+
3
+ #include <android/looper.h>
4
+ #include <unistd.h>
5
+
6
+ class MainThreadDispatcher {
7
+ private:
8
+ ALooper *mainLooper;
9
+ int messagePipe[2];
10
+ std::queue<std::function<void()>> taskQueue;
11
+ std::mutex queueMutex;
12
+
13
+ static constexpr int LOOPER_ID_MAIN = 1;
14
+
15
+ void processMessages() {
16
+ std::lock_guard<std::mutex> lock(queueMutex);
17
+ while (!taskQueue.empty()) {
18
+ auto task = taskQueue.front();
19
+ taskQueue.pop();
20
+ task();
21
+ }
22
+ }
23
+
24
+ public:
25
+ static MainThreadDispatcher &getInstance() {
26
+ static MainThreadDispatcher instance;
27
+ return instance;
28
+ }
29
+
30
+ void post(std::function<void()> task) {
31
+ // TODO: this is disabled for now but we can clean this up
32
+ // if (ALooper_forThread() == mainLooper) {
33
+ // task();
34
+ // } else {
35
+ {
36
+ std::lock_guard<std::mutex> lock(queueMutex);
37
+ taskQueue.push(std::move(task));
38
+ }
39
+ char wake = 1;
40
+ write(messagePipe[1], &wake, 1);
41
+ // }
42
+ }
43
+
44
+ ~MainThreadDispatcher() {
45
+ close(messagePipe[0]);
46
+ close(messagePipe[1]);
47
+ }
48
+
49
+ private:
50
+ MainThreadDispatcher() {
51
+ mainLooper = ALooper_forThread();
52
+ if (!mainLooper) {
53
+ mainLooper = ALooper_prepare(ALOOPER_PREPARE_ALLOW_NON_CALLBACKS);
54
+ }
55
+
56
+ pipe(messagePipe);
57
+
58
+ ALooper_addFd(
59
+ mainLooper, messagePipe[0], LOOPER_ID_MAIN, ALOOPER_EVENT_INPUT,
60
+ [](int fd, int events, void *data) -> int {
61
+ char buf[1];
62
+ read(fd, buf, 1);
63
+ auto dispatcher = static_cast<MainThreadDispatcher *>(data);
64
+ dispatcher->processMessages();
65
+ return 1;
66
+ },
67
+ this);
68
+ }
69
+ };
@@ -17,6 +17,7 @@
17
17
 
18
18
  #include "AHardwareBufferUtils.h"
19
19
  #include "JniPlatformContext.h"
20
+ #include "MainThreadDispatcher.h"
20
21
  #include "RNSkAndroidVideo.h"
21
22
  #include "RNSkPlatformContext.h"
22
23
 
@@ -37,13 +38,9 @@ public:
37
38
  std::shared_ptr<facebook::react::CallInvoker> jsCallInvoker)
38
39
  : RNSkPlatformContext(runtime, jsCallInvoker,
39
40
  jniPlatformContext->getPixelDensity()),
40
- _jniPlatformContext(jniPlatformContext) {
41
- // Hook onto the notify draw loop callback in the platform context
42
- jniPlatformContext->setOnNotifyDrawLoop(
43
- [this]() { notifyDrawLoop(false); });
44
- }
41
+ _jniPlatformContext(jniPlatformContext) {}
45
42
 
46
- ~RNSkAndroidPlatformContext() { stopDrawLoop(); }
43
+ ~RNSkAndroidPlatformContext() {}
47
44
 
48
45
  void performStreamOperation(
49
46
  const std::string &sourceUri,
@@ -163,17 +160,13 @@ public:
163
160
  }
164
161
 
165
162
  void runOnMainThread(std::function<void()> task) override {
166
- _jniPlatformContext->runTaskOnMainThread(task);
163
+ MainThreadDispatcher::getInstance().post(std::move(task));
167
164
  }
168
165
 
169
166
  sk_sp<SkImage> takeScreenshotFromViewTag(size_t tag) override {
170
167
  return _jniPlatformContext->takeScreenshotFromViewTag(tag);
171
168
  }
172
169
 
173
- void startDrawLoop() override { _jniPlatformContext->startDrawLoop(); }
174
-
175
- void stopDrawLoop() override { _jniPlatformContext->stopDrawLoop(); }
176
-
177
170
  private:
178
171
  JniPlatformContext *_jniPlatformContext;
179
172
  };
@@ -19,8 +19,6 @@ public:
19
19
 
20
20
  virtual float getPixelDensity() = 0;
21
21
 
22
- virtual void setMode(std::string mode) = 0;
23
-
24
22
  virtual void setShowDebugInfo(bool show) = 0;
25
23
 
26
24
  virtual void viewDidUnmount() = 0;
@@ -42,7 +40,7 @@ public:
42
40
 
43
41
  // Try to render directly when the surface has been set so that
44
42
  // we don't have to wait until the draw loop returns.
45
- RNSkView::renderImmediate();
43
+ RNSkView::redraw();
46
44
  }
47
45
 
48
46
  void surfaceDestroyed() override {
@@ -55,24 +53,16 @@ public:
55
53
  ->surfaceSizeChanged(surface, width, height);
56
54
  // This is only need for the first time to frame, this renderImmediate call
57
55
  // will invoke updateTexImage for the previous frame
58
- RNSkView::renderImmediate();
56
+ RNSkView::redraw();
59
57
  }
60
58
 
61
59
  float getPixelDensity() override {
62
60
  return T::getPlatformContext()->getPixelDensity();
63
61
  }
64
62
 
65
- void setMode(std::string mode) override {
66
- if (mode.compare("continuous") == 0) {
67
- T::setDrawingMode(RNSkDrawingMode::Continuous);
68
- } else {
69
- T::setDrawingMode(RNSkDrawingMode::Default);
70
- }
71
- }
72
-
73
63
  void setShowDebugInfo(bool show) override { T::setShowDebugOverlays(show); }
74
64
 
75
- void viewDidUnmount() override { T::endDrawingLoop(); }
65
+ void viewDidUnmount() override {}
76
66
 
77
67
  std::shared_ptr<RNSkView> getSkiaView() override {
78
68
  return T::shared_from_this();
@@ -64,7 +64,6 @@ bool RNSkOpenGLCanvasProvider::renderToCanvas(
64
64
 
65
65
  // Swap buffers and show on screen
66
66
  _surfaceHolder->present();
67
-
68
67
  return true;
69
68
  } else {
70
69
  // the render context did not provide a surface
@@ -25,14 +25,8 @@ public class PlatformContext {
25
25
 
26
26
  private final ReactContext mContext;
27
27
 
28
- private boolean _drawLoopActive = false;
29
- private boolean _isPaused = false;
30
-
31
28
  private final String TAG = "PlatformContext";
32
29
 
33
- private final Handler mainHandler = new Handler(Looper.getMainLooper());
34
-
35
-
36
30
  public PlatformContext(ReactContext reactContext) {
37
31
  mContext = reactContext;
38
32
  mHybridData = initHybrid(reactContext.getResources().getDisplayMetrics().density);
@@ -53,69 +47,11 @@ public class PlatformContext {
53
47
  return buffer.toByteArray();
54
48
  }
55
49
 
56
- private void postFrameLoop() {
57
- Choreographer.FrameCallback frameCallback = new Choreographer.FrameCallback() {
58
- @Override
59
- public void doFrame(long frameTimeNanos) {
60
- if (_drawLoopActive) {
61
- Choreographer.getInstance().postFrameCallback(this);
62
- }
63
- if (_isPaused) {
64
- return;
65
- }
66
- notifyDrawLoop();
67
- }
68
- };
69
- Choreographer.getInstance().postFrameCallback(frameCallback);
70
- }
71
-
72
-
73
- @DoNotStrip
74
- public void notifyTaskReadyOnMainThread() {
75
- mainHandler.post(new Runnable() {
76
- @Override
77
- public void run() {
78
- notifyTaskReady();
79
- }
80
- });
81
- }
82
-
83
50
  @DoNotStrip
84
51
  Object takeScreenshotFromViewTag(int tag) {
85
52
  return ViewScreenshotService.makeViewScreenshotFromTag(mContext, tag);
86
53
  }
87
54
 
88
- @DoNotStrip
89
- public void raise(final String message) {
90
- mainHandler.post(new Runnable() {
91
- @Override
92
- public void run() {
93
- mContext.handleException(new Exception(message));
94
- }
95
- });
96
- }
97
-
98
- @DoNotStrip
99
- public void beginDrawLoop() {
100
- if (_drawLoopActive) {
101
- return;
102
- }
103
- _drawLoopActive = true;
104
- mainHandler.post(new Runnable() {
105
- @Override
106
- public void run() {
107
- postFrameLoop();
108
- }
109
- });
110
- }
111
-
112
- @DoNotStrip
113
- public void endDrawLoop() {
114
- if (_drawLoopActive) {
115
- _drawLoopActive = false;
116
- }
117
- }
118
-
119
55
  @DoNotStrip
120
56
  public byte[] getJniStreamFromSource(String sourceUri) throws IOException {
121
57
  // First try loading the input as a resource directly
@@ -163,25 +99,6 @@ public class PlatformContext {
163
99
  return null;
164
100
  }
165
101
 
166
- void onPause() {
167
- Log.i(TAG, "Paused");
168
- _isPaused = true;
169
- }
170
-
171
- void onResume() {
172
- _isPaused = false;
173
- Log.i(TAG, "Resume");
174
- if(_drawLoopActive) {
175
- // Restart draw loop
176
- mainHandler.post(new Runnable() {
177
- @Override
178
- public void run() {
179
- postFrameLoop();
180
- }
181
- });
182
- }
183
- }
184
-
185
102
  @Override
186
103
  protected void finalize() throws Throwable {
187
104
  mHybridData.resetNative();
@@ -190,6 +107,4 @@ public class PlatformContext {
190
107
 
191
108
  // Private c++ native methods
192
109
  private native HybridData initHybrid(float pixelDensity);
193
- private native void notifyDrawLoop();
194
- private native void notifyTaskReady();
195
110
  }
@@ -12,7 +12,7 @@ import com.facebook.react.module.annotations.ReactModule;
12
12
  import java.lang.ref.WeakReference;
13
13
 
14
14
  @ReactModule(name="RNSkiaModule")
15
- public class RNSkiaModule extends NativeSkiaModuleSpec implements LifecycleEventListener {
15
+ public class RNSkiaModule extends NativeSkiaModuleSpec {
16
16
  public static final String NAME = "RNSkiaModule";
17
17
 
18
18
  private final WeakReference<ReactApplicationContext> weakReactContext;
@@ -21,17 +21,12 @@ public class RNSkiaModule extends NativeSkiaModuleSpec implements LifecycleEvent
21
21
  public RNSkiaModule(ReactApplicationContext reactContext) {
22
22
  super(reactContext);
23
23
  this.weakReactContext = new WeakReference<>(reactContext);
24
- reactContext.addLifecycleEventListener(this);
25
24
  }
26
25
 
27
26
  @Override
28
27
  public void invalidate() {
29
28
  super.invalidate();
30
29
 
31
- if (getReactApplicationContext() != null) {
32
- getReactApplicationContext().removeLifecycleEventListener(this);
33
- }
34
-
35
30
  if (this.skiaManager != null) {
36
31
  this.skiaManager.invalidate();
37
32
  this.skiaManager.destroy();
@@ -69,19 +64,4 @@ public class RNSkiaModule extends NativeSkiaModuleSpec implements LifecycleEvent
69
64
  return false;
70
65
  }
71
66
  }
72
-
73
- @Override
74
- public void onHostResume() {
75
- if(skiaManager != null) skiaManager.onHostResume();
76
- }
77
-
78
- @Override
79
- public void onHostPause() {
80
- if(skiaManager != null) skiaManager.onHostPause();
81
- }
82
-
83
- @Override
84
- public void onHostDestroy() {
85
-
86
- }
87
67
  }
@@ -43,10 +43,6 @@ public class SkiaManager {
43
43
  return mPlatformContext;
44
44
  }
45
45
 
46
- public void onHostResume() { mPlatformContext.onResume(); }
47
-
48
- public void onHostPause() { mPlatformContext.onPause(); }
49
-
50
46
  // private C++ functions
51
47
  private native HybridData initHybrid(long jsContext, RuntimeExecutor runtimeExecutor,
52
48
  PlatformContext platformContext);
@@ -21,11 +21,8 @@ public class SkiaDomViewManagerDelegate<T extends View, U extends BaseViewManage
21
21
  @Override
22
22
  public void setProperty(T view, String propName, @Nullable Object value) {
23
23
  switch (propName) {
24
- case "mode":
25
- mViewManager.setMode(view, value == null ? null : (String) value);
26
- break;
27
24
  case "debug":
28
- mViewManager.setDebug(view, value == null ? false : (boolean) value);
25
+ mViewManager.setDebug(view, value != null && (boolean) value);
29
26
  break;
30
27
  default:
31
28
  super.setProperty(view, propName, value);
@@ -13,6 +13,5 @@ import android.view.View;
13
13
  import androidx.annotation.Nullable;
14
14
 
15
15
  public interface SkiaDomViewManagerInterface<T extends View> {
16
- void setMode(T view, @Nullable String value);
17
16
  void setDebug(T view, boolean value);
18
17
  }
@@ -47,13 +47,12 @@ void RNSkManager::invalidate() {
47
47
 
48
48
  // Invalidate members
49
49
  _viewApi->unregisterAll();
50
- _platformContext->invalidate();
51
50
  }
52
51
 
53
52
  void RNSkManager::registerSkiaView(size_t nativeId,
54
53
  std::shared_ptr<RNSkView> view) {
55
54
  if (!_isInvalidated && _viewApi != nullptr)
56
- _viewApi->registerSkiaView(nativeId, view);
55
+ _viewApi->registerSkiaView(nativeId, std::move(view));
57
56
  }
58
57
 
59
58
  void RNSkManager::unregisterSkiaView(size_t nativeId) {
@@ -63,7 +62,7 @@ void RNSkManager::unregisterSkiaView(size_t nativeId) {
63
62
 
64
63
  void RNSkManager::setSkiaView(size_t nativeId, std::shared_ptr<RNSkView> view) {
65
64
  if (!_isInvalidated && _viewApi != nullptr)
66
- _viewApi->setSkiaView(nativeId, view);
65
+ _viewApi->setSkiaView(nativeId, std::move(view));
67
66
  }
68
67
 
69
68
  void RNSkManager::installBindings() {