@shopify/react-native-skia 2.2.11 → 2.2.13

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 (63) hide show
  1. package/cpp/api/JsiNativeBuffer.h +2 -0
  2. package/cpp/api/JsiSkAnimatedImage.h +6 -2
  3. package/cpp/api/JsiSkAnimatedImageFactory.h +6 -3
  4. package/cpp/api/JsiSkApi.h +2 -0
  5. package/cpp/api/JsiSkCanvas.h +2 -0
  6. package/cpp/api/JsiSkColorFilter.h +2 -0
  7. package/cpp/api/JsiSkColorFilterFactory.h +31 -23
  8. package/cpp/api/JsiSkContourMeasure.h +8 -4
  9. package/cpp/api/JsiSkContourMeasureIter.h +10 -4
  10. package/cpp/api/JsiSkData.h +5 -0
  11. package/cpp/api/JsiSkDataFactory.h +14 -7
  12. package/cpp/api/JsiSkFont.h +17 -10
  13. package/cpp/api/JsiSkFontMgr.h +6 -2
  14. package/cpp/api/JsiSkFontMgrFactory.h +5 -2
  15. package/cpp/api/JsiSkFontStyle.h +6 -3
  16. package/cpp/api/JsiSkHostObjects.h +21 -44
  17. package/cpp/api/JsiSkImage.h +17 -8
  18. package/cpp/api/JsiSkImageFactory.h +26 -13
  19. package/cpp/api/JsiSkImageFilter.h +2 -0
  20. package/cpp/api/JsiSkImageFilterFactory.h +160 -143
  21. package/cpp/api/JsiSkImageInfo.h +6 -3
  22. package/cpp/api/JsiSkMaskFilter.h +2 -0
  23. package/cpp/api/JsiSkMaskFilterFactory.h +7 -5
  24. package/cpp/api/JsiSkMatrix.h +6 -2
  25. package/cpp/api/JsiSkPaint.h +9 -4
  26. package/cpp/api/JsiSkParagraph.h +2 -0
  27. package/cpp/api/JsiSkParagraphBuilder.h +6 -3
  28. package/cpp/api/JsiSkParagraphBuilderFactory.h +6 -3
  29. package/cpp/api/JsiSkPath.h +33 -15
  30. package/cpp/api/JsiSkPathEffect.h +2 -0
  31. package/cpp/api/JsiSkPathEffectFactory.h +37 -32
  32. package/cpp/api/JsiSkPathFactory.h +22 -10
  33. package/cpp/api/JsiSkPicture.h +13 -2
  34. package/cpp/api/JsiSkPictureFactory.h +6 -2
  35. package/cpp/api/JsiSkPictureRecorder.h +14 -6
  36. package/cpp/api/JsiSkPoint.h +9 -5
  37. package/cpp/api/JsiSkRRect.h +13 -8
  38. package/cpp/api/JsiSkRSXform.h +14 -8
  39. package/cpp/api/JsiSkRect.h +13 -8
  40. package/cpp/api/JsiSkRuntimeEffect.h +10 -6
  41. package/cpp/api/JsiSkRuntimeEffectFactory.h +6 -3
  42. package/cpp/api/JsiSkRuntimeShaderBuilder.h +12 -6
  43. package/cpp/api/JsiSkSVG.h +24 -0
  44. package/cpp/api/JsiSkSVGFactory.h +8 -4
  45. package/cpp/api/JsiSkShader.h +2 -0
  46. package/cpp/api/JsiSkShaderFactory.h +34 -24
  47. package/cpp/api/JsiSkSkottie.h +29 -0
  48. package/cpp/api/JsiSkSurface.h +21 -5
  49. package/cpp/api/JsiSkSurfaceFactory.h +10 -6
  50. package/cpp/api/JsiSkTextBlob.h +12 -0
  51. package/cpp/api/JsiSkTextBlobFactory.h +18 -12
  52. package/cpp/api/JsiSkTypeface.h +19 -3
  53. package/cpp/api/JsiSkTypefaceFactory.h +6 -2
  54. package/cpp/api/JsiSkTypefaceFontProvider.h +10 -5
  55. package/cpp/api/JsiSkTypefaceFontProviderFactory.h +6 -3
  56. package/cpp/api/JsiSkVertices.h +16 -5
  57. package/cpp/api/JsiSkiaContext.h +10 -6
  58. package/cpp/api/JsiSkottieFactory.h +6 -3
  59. package/cpp/api/JsiVideo.h +10 -5
  60. package/cpp/api/recorder/JsiRecorder.h +9 -4
  61. package/cpp/jsi/JsiHostObject.h +3 -3
  62. package/cpp/rnskia/RNSkJsiViewApi.h +10 -2
  63. package/package.json +1 -1
@@ -35,9 +35,10 @@ public:
35
35
  JSI_API_TYPENAME("ParagraphBuilder");
36
36
 
37
37
  JSI_HOST_FUNCTION(build) {
38
- return jsi::Object::createFromHostObject(
39
- runtime,
40
- std::make_shared<JsiSkParagraph>(getContext(), _builder.get()));
38
+ auto paragraph =
39
+ std::make_shared<JsiSkParagraph>(getContext(), _builder.get());
40
+ return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(runtime, paragraph,
41
+ getContext());
41
42
  }
42
43
 
43
44
  JSI_HOST_FUNCTION(reset) {
@@ -109,6 +110,8 @@ public:
109
110
  JSI_EXPORT_FUNC(JsiSkParagraphBuilder, pushStyle),
110
111
  JSI_EXPORT_FUNC(JsiSkParagraphBuilder, pop))
111
112
 
113
+ size_t getMemoryPressure() const override { return 4096; }
114
+
112
115
  explicit JsiSkParagraphBuilder(std::shared_ptr<RNSkPlatformContext> context,
113
116
  para::ParagraphStyle paragraphStyle,
114
117
  sk_sp<SkFontMgr> fontManager)
@@ -39,13 +39,16 @@ public:
39
39
  : nullptr;
40
40
 
41
41
  // Create the paragraph builder
42
- return jsi::Object::createFromHostObject(
43
- runtime, std::make_shared<JsiSkParagraphBuilder>(
44
- getContext(), paragraphStyle, fontMgr));
42
+ auto builder = std::make_shared<JsiSkParagraphBuilder>(
43
+ getContext(), paragraphStyle, fontMgr);
44
+ return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(runtime, builder,
45
+ getContext());
45
46
  }
46
47
 
47
48
  JSI_EXPORT_FUNCTIONS(JSI_EXPORT_FUNC(JsiSkParagraphBuilderFactory, Make))
48
49
 
50
+ size_t getMemoryPressure() const override { return 3072; }
51
+
49
52
  explicit JsiSkParagraphBuilderFactory(
50
53
  std::shared_ptr<RNSkPlatformContext> context)
51
54
  : JsiSkHostObject(std::move(context)) {}
@@ -173,15 +173,17 @@ public:
173
173
 
174
174
  JSI_HOST_FUNCTION(computeTightBounds) {
175
175
  auto result = getObject()->computeTightBounds();
176
- return jsi::Object::createFromHostObject(
177
- runtime, std::make_shared<JsiSkRect>(getContext(), std::move(result)));
176
+ auto hostObjectInstance = std::make_shared<JsiSkRect>(getContext(), result);
177
+ return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(
178
+ runtime, hostObjectInstance, getContext());
178
179
  }
179
180
 
180
181
  // TODO-API: Should this be a property?
181
182
  JSI_HOST_FUNCTION(getBounds) {
182
183
  auto result = getObject()->getBounds();
183
- return jsi::Object::createFromHostObject(
184
- runtime, std::make_shared<JsiSkRect>(getContext(), std::move(result)));
184
+ auto hostObjectInstance = std::make_shared<JsiSkRect>(getContext(), result);
185
+ return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(
186
+ runtime, hostObjectInstance, getContext());
185
187
  }
186
188
 
187
189
  JSI_HOST_FUNCTION(conicTo) {
@@ -330,8 +332,9 @@ public:
330
332
  JSI_HOST_FUNCTION(getPoint) {
331
333
  auto index = arguments[0].asNumber();
332
334
  auto point = getObject()->getPoint(index);
333
- return jsi::Object::createFromHostObject(
334
- runtime, std::make_shared<JsiSkPoint>(getContext(), point));
335
+ auto hostObjectInstance = std::make_shared<JsiSkPoint>(getContext(), point);
336
+ return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(
337
+ runtime, hostObjectInstance, getContext());
335
338
  }
336
339
 
337
340
  JSI_HOST_FUNCTION(toSVGString) {
@@ -473,8 +476,10 @@ public:
473
476
 
474
477
  JSI_HOST_FUNCTION(copy) {
475
478
  const auto *path = getObject().get();
476
- return jsi::Object::createFromHostObject(
477
- runtime, std::make_shared<JsiSkPath>(getContext(), SkPath(*path)));
479
+ auto hostObjectInstance =
480
+ std::make_shared<JsiSkPath>(getContext(), SkPath(*path));
481
+ return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(
482
+ runtime, hostObjectInstance, getContext());
478
483
  }
479
484
 
480
485
  JSI_HOST_FUNCTION(op) {
@@ -509,8 +514,10 @@ public:
509
514
  if (!succeed) {
510
515
  return nullptr;
511
516
  }
512
- return jsi::Object::createFromHostObject(
513
- runtime, std::make_shared<JsiSkPath>(getContext(), std::move(result)));
517
+ auto hostObjectInstance =
518
+ std::make_shared<JsiSkPath>(getContext(), std::move(result));
519
+ return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(
520
+ runtime, hostObjectInstance, getContext());
514
521
  }
515
522
  JSI_HOST_FUNCTION(toCmds) {
516
523
  auto path = *getObject();
@@ -633,19 +640,30 @@ public:
633
640
  : JsiSkWrappingSharedPtrHostObject<SkPath>(
634
641
  std::move(context), std::make_shared<SkPath>(std::move(path))) {}
635
642
 
643
+ size_t getMemoryPressure() const override {
644
+ auto path = getObject();
645
+ if (!path)
646
+ return 0;
647
+
648
+ // SkPath provides approximateBytesUsed() to estimate memory usage
649
+ return path->approximateBytesUsed();
650
+ }
651
+
636
652
  static jsi::Value toValue(jsi::Runtime &runtime,
637
653
  std::shared_ptr<RNSkPlatformContext> context,
638
654
  const SkPath &path) {
639
- return jsi::Object::createFromHostObject(
640
- runtime, std::make_shared<JsiSkPath>(std::move(context), path));
655
+ auto hostObjectInstance = std::make_shared<JsiSkPath>(context, path);
656
+ return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(
657
+ runtime, hostObjectInstance, context);
641
658
  }
642
659
 
643
660
  static jsi::Value toValue(jsi::Runtime &runtime,
644
661
  std::shared_ptr<RNSkPlatformContext> context,
645
662
  SkPath &&path) {
646
- return jsi::Object::createFromHostObject(
647
- runtime,
648
- std::make_shared<JsiSkPath>(std::move(context), std::move(path)));
663
+ auto hostObjectInstance =
664
+ std::make_shared<JsiSkPath>(context, std::move(path));
665
+ return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(
666
+ runtime, hostObjectInstance, context);
649
667
  }
650
668
  };
651
669
 
@@ -25,6 +25,8 @@ public:
25
25
  : JsiSkWrappingSkPtrHostObject<SkPathEffect>(std::move(context),
26
26
  std::move(pathEffect)) {}
27
27
 
28
+ size_t getMemoryPressure() const override { return 2048; }
29
+
28
30
  EXPORT_JSI_API_TYPENAME(JsiSkPathEffect, PathEffect)
29
31
  JSI_EXPORT_FUNCTIONS(JSI_EXPORT_FUNC(JsiSkPathEffect, dispose))
30
32
  };
@@ -29,9 +29,10 @@ class JsiSkPathEffectFactory : public JsiSkHostObject {
29
29
  public:
30
30
  JSI_HOST_FUNCTION(MakeCorner) {
31
31
  int radius = arguments[0].asNumber();
32
- return jsi::Object::createFromHostObject(
33
- runtime, std::make_shared<JsiSkPathEffect>(
34
- getContext(), SkCornerPathEffect::Make(radius)));
32
+ auto pathEffect = std::make_shared<JsiSkPathEffect>(
33
+ getContext(), SkCornerPathEffect::Make(radius));
34
+ return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(runtime, pathEffect,
35
+ getContext());
35
36
  }
36
37
 
37
38
  JSI_HOST_FUNCTION(MakeDash) {
@@ -48,39 +49,40 @@ public:
48
49
  ? arguments[1].asNumber()
49
50
  : 0;
50
51
  auto i = SkSpan(intervals.data(), intervals.size());
51
- return jsi::Object::createFromHostObject(
52
- runtime, std::make_shared<JsiSkPathEffect>(
53
- getContext(), SkDashPathEffect::Make(i, phase)));
52
+ auto pathEffect = std::make_shared<JsiSkPathEffect>(
53
+ getContext(), SkDashPathEffect::Make(i, phase));
54
+ return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(runtime, pathEffect,
55
+ getContext());
54
56
  }
55
57
 
56
58
  JSI_HOST_FUNCTION(MakeDiscrete) {
57
59
  int segLength = arguments[0].asNumber();
58
60
  int dec = arguments[1].asNumber();
59
61
  int seedAssist = arguments[2].asNumber();
60
- return jsi::Object::createFromHostObject(
61
- runtime, std::make_shared<JsiSkPathEffect>(
62
- getContext(),
63
- SkDiscretePathEffect::Make(segLength, dec, seedAssist)));
62
+ auto pathEffect = std::make_shared<JsiSkPathEffect>(
63
+ getContext(), SkDiscretePathEffect::Make(segLength, dec, seedAssist));
64
+ return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(runtime, pathEffect,
65
+ getContext());
64
66
  }
65
67
 
66
68
  JSI_HOST_FUNCTION(MakeCompose) {
67
69
  auto outer = JsiSkPathEffect::fromValue(runtime, arguments[0]);
68
70
  auto inner = JsiSkPathEffect::fromValue(runtime, arguments[1]);
69
-
70
- return jsi::Object::createFromHostObject(
71
- runtime, std::make_shared<JsiSkPathEffect>(
72
- getContext(), SkPathEffect::MakeCompose(
73
- std::move(outer), std::move(inner))));
71
+ auto pathEffect = std::make_shared<JsiSkPathEffect>(
72
+ getContext(),
73
+ SkPathEffect::MakeCompose(std::move(outer), std::move(inner)));
74
+ return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(runtime, pathEffect,
75
+ getContext());
74
76
  }
75
77
 
76
78
  JSI_HOST_FUNCTION(MakeSum) {
77
79
  auto outer = JsiSkPathEffect::fromValue(runtime, arguments[0]);
78
80
  auto inner = JsiSkPathEffect::fromValue(runtime, arguments[1]);
79
-
80
- return jsi::Object::createFromHostObject(
81
- runtime, std::make_shared<JsiSkPathEffect>(
82
- getContext(), SkPathEffect::MakeSum(std::move(outer),
83
- std::move(inner))));
81
+ auto pathEffect = std::make_shared<JsiSkPathEffect>(
82
+ getContext(),
83
+ SkPathEffect::MakeSum(std::move(outer), std::move(inner)));
84
+ return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(runtime, pathEffect,
85
+ getContext());
84
86
  }
85
87
 
86
88
  JSI_HOST_FUNCTION(MakePath1D) {
@@ -89,27 +91,28 @@ public:
89
91
  auto phase = arguments[2].asNumber();
90
92
  auto style =
91
93
  static_cast<SkPath1DPathEffect::Style>(arguments[3].asNumber());
92
- return jsi::Object::createFromHostObject(
93
- runtime, std::make_shared<JsiSkPathEffect>(
94
- getContext(),
95
- SkPath1DPathEffect::Make(*path, advance, phase, style)));
94
+ auto pathEffect = std::make_shared<JsiSkPathEffect>(
95
+ getContext(), SkPath1DPathEffect::Make(*path, advance, phase, style));
96
+ return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(runtime, pathEffect,
97
+ getContext());
96
98
  }
97
99
 
98
100
  JSI_HOST_FUNCTION(MakePath2D) {
99
101
  auto matrix = JsiSkMatrix::fromValue(runtime, arguments[0]);
100
102
  auto path = JsiSkPath::fromValue(runtime, arguments[1]);
101
- return jsi::Object::createFromHostObject(
102
- runtime, std::make_shared<JsiSkPathEffect>(
103
- getContext(), SkPath2DPathEffect::Make(*matrix, *path)));
103
+ auto pathEffect = std::make_shared<JsiSkPathEffect>(
104
+ getContext(), SkPath2DPathEffect::Make(*matrix, *path));
105
+ return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(runtime, pathEffect,
106
+ getContext());
104
107
  }
105
108
 
106
109
  JSI_HOST_FUNCTION(MakeLine2D) {
107
110
  auto width = arguments[0].asNumber();
108
111
  auto matrix = JsiSkMatrix::fromValue(runtime, arguments[1]);
109
-
110
- return jsi::Object::createFromHostObject(
111
- runtime, std::make_shared<JsiSkPathEffect>(
112
- getContext(), SkLine2DPathEffect::Make(width, *matrix)));
112
+ auto pathEffect = std::make_shared<JsiSkPathEffect>(
113
+ getContext(), SkLine2DPathEffect::Make(width, *matrix));
114
+ return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(runtime, pathEffect,
115
+ getContext());
113
116
  }
114
117
 
115
118
  JSI_EXPORT_FUNCTIONS(JSI_EXPORT_FUNC(JsiSkPathEffectFactory, MakeCorner),
@@ -119,7 +122,9 @@ public:
119
122
  JSI_EXPORT_FUNC(JsiSkPathEffectFactory, MakeSum),
120
123
  JSI_EXPORT_FUNC(JsiSkPathEffectFactory, MakeLine2D),
121
124
  JSI_EXPORT_FUNC(JsiSkPathEffectFactory, MakePath1D),
122
- JSI_EXPORT_FUNC(JsiSkPathEffectFactory, MakePath2D), )
125
+ JSI_EXPORT_FUNC(JsiSkPathEffectFactory, MakePath2D))
126
+
127
+ size_t getMemoryPressure() const override { return 1024; }
123
128
 
124
129
  explicit JsiSkPathEffectFactory(std::shared_ptr<RNSkPlatformContext> context)
125
130
  : JsiSkHostObject(std::move(context)) {}
@@ -32,8 +32,10 @@ class JsiSkPathFactory : public JsiSkHostObject {
32
32
 
33
33
  public:
34
34
  JSI_HOST_FUNCTION(Make) {
35
- return jsi::Object::createFromHostObject(
36
- runtime, std::make_shared<JsiSkPath>(getContext(), SkPath()));
35
+ auto hostObjectInstance =
36
+ std::make_shared<JsiSkPath>(getContext(), SkPath());
37
+ return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(
38
+ runtime, hostObjectInstance, getContext());
37
39
  }
38
40
 
39
41
  JSI_HOST_FUNCTION(MakeFromSVGString) {
@@ -45,8 +47,10 @@ public:
45
47
  return jsi::Value(nullptr);
46
48
  }
47
49
 
48
- return jsi::Object::createFromHostObject(
49
- runtime, std::make_shared<JsiSkPath>(getContext(), std::move(result)));
50
+ auto hostObjectInstance =
51
+ std::make_shared<JsiSkPath>(getContext(), std::move(result));
52
+ return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(
53
+ runtime, hostObjectInstance, getContext());
50
54
  }
51
55
 
52
56
  JSI_HOST_FUNCTION(MakeFromOp) {
@@ -58,8 +62,10 @@ public:
58
62
  if (!success) {
59
63
  return jsi::Value(nullptr);
60
64
  }
61
- return jsi::Object::createFromHostObject(
62
- runtime, std::make_shared<JsiSkPath>(getContext(), std::move(result)));
65
+ auto hostObjectInstance =
66
+ std::make_shared<JsiSkPath>(getContext(), std::move(result));
67
+ return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(
68
+ runtime, hostObjectInstance, getContext());
63
69
  }
64
70
 
65
71
  JSI_HOST_FUNCTION(MakeFromCmds) {
@@ -144,8 +150,10 @@ public:
144
150
  }
145
151
  }
146
152
  }
147
- return jsi::Object::createFromHostObject(
148
- runtime, std::make_shared<JsiSkPath>(getContext(), std::move(path)));
153
+ auto hostObjectInstance =
154
+ std::make_shared<JsiSkPath>(getContext(), std::move(path));
155
+ return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(
156
+ runtime, hostObjectInstance, getContext());
149
157
  }
150
158
 
151
159
  JSI_HOST_FUNCTION(MakeFromText) {
@@ -156,10 +164,14 @@ public:
156
164
  SkPath path;
157
165
  SkTextUtils::GetPath(text.c_str(), strlen(text.c_str()),
158
166
  SkTextEncoding::kUTF8, x, y, *font, &path);
159
- return jsi::Object::createFromHostObject(
160
- runtime, std::make_shared<JsiSkPath>(getContext(), std::move(path)));
167
+ auto hostObjectInstance =
168
+ std::make_shared<JsiSkPath>(getContext(), std::move(path));
169
+ return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(
170
+ runtime, hostObjectInstance, getContext());
161
171
  }
162
172
 
173
+ size_t getMemoryPressure() const override { return 1024; }
174
+
163
175
  JSI_EXPORT_FUNCTIONS(JSI_EXPORT_FUNC(JsiSkPathFactory, Make),
164
176
  JSI_EXPORT_FUNC(JsiSkPathFactory, MakeFromSVGString),
165
177
  JSI_EXPORT_FUNC(JsiSkPathFactory, MakeFromOp),
@@ -39,8 +39,9 @@ public:
39
39
 
40
40
  // Create shader
41
41
  auto shader = getObject()->makeShader(tmx, tmy, fm, m, tr);
42
- return jsi::Object::createFromHostObject(
43
- runtime, std::make_shared<JsiSkShader>(getContext(), shader));
42
+ auto shaderObj = std::make_shared<JsiSkShader>(getContext(), shader);
43
+ return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(runtime, shaderObj,
44
+ getContext());
44
45
  }
45
46
 
46
47
  JSI_HOST_FUNCTION(serialize) {
@@ -67,5 +68,15 @@ public:
67
68
  JSI_EXPORT_FUNCTIONS(JSI_EXPORT_FUNC(JsiSkPicture, makeShader),
68
69
  JSI_EXPORT_FUNC(JsiSkPicture, serialize),
69
70
  JSI_EXPORT_FUNC(JsiSkPicture, dispose))
71
+
72
+ size_t getMemoryPressure() const override {
73
+ auto picture = getObject();
74
+ if (!picture) {
75
+ return 0;
76
+ }
77
+ // SkPicture provides approximateBytesUsed() method to estimate memory usage
78
+ auto bytesUsed = picture->approximateBytesUsed();
79
+ return bytesUsed;
80
+ }
70
81
  };
71
82
  } // namespace RNSkia
@@ -35,8 +35,10 @@ public:
35
35
  SkData::MakeWithCopy(buffer.data(runtime), buffer.size(runtime));
36
36
  auto picture = SkPicture::MakeFromData(data.get());
37
37
  if (picture != nullptr) {
38
- return jsi::Object::createFromHostObject(
39
- runtime, std::make_shared<JsiSkPicture>(getContext(), picture));
38
+ auto hostObjectInstance =
39
+ std::make_shared<JsiSkPicture>(getContext(), std::move(picture));
40
+ return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(
41
+ runtime, hostObjectInstance, getContext());
40
42
  } else {
41
43
  return jsi::Value::undefined();
42
44
  }
@@ -44,6 +46,8 @@ public:
44
46
 
45
47
  JSI_EXPORT_FUNCTIONS(JSI_EXPORT_FUNC(JsiSkPictureFactory, MakePicture))
46
48
 
49
+ size_t getMemoryPressure() const override { return 1024; }
50
+
47
51
  explicit JsiSkPictureFactory(std::shared_ptr<RNSkPlatformContext> context)
48
52
  : JsiSkHostObject(std::move(context)) {}
49
53
  };
@@ -37,14 +37,17 @@ public:
37
37
  SkRect rect = SkRect::Make(size);
38
38
  canvas = getObject()->beginRecording(rect, nullptr);
39
39
  }
40
- return jsi::Object::createFromHostObject(
41
- runtime, std::make_shared<JsiSkCanvas>(getContext(), canvas));
40
+ auto canvasObj = std::make_shared<JsiSkCanvas>(getContext(), canvas);
41
+ return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(runtime, canvasObj,
42
+ getContext());
42
43
  }
43
44
 
44
45
  JSI_HOST_FUNCTION(finishRecordingAsPicture) {
45
46
  auto picture = getObject()->finishRecordingAsPicture();
46
- return jsi::Object::createFromHostObject(
47
- runtime, std::make_shared<JsiSkPicture>(getContext(), picture));
47
+ auto hostObjectInstance =
48
+ std::make_shared<JsiSkPicture>(getContext(), std::move(picture));
49
+ return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(
50
+ runtime, hostObjectInstance, getContext());
48
51
  }
49
52
 
50
53
  EXPORT_JSI_API_TYPENAME(JsiSkPictureRecorder, PictureRecorder)
@@ -54,11 +57,16 @@ public:
54
57
  finishRecordingAsPicture),
55
58
  JSI_EXPORT_FUNC(JsiSkPictureRecorder, dispose))
56
59
 
60
+ size_t getMemoryPressure() const override {
61
+ return sizeof(SkPictureRecorder);
62
+ }
63
+
57
64
  static const jsi::HostFunctionType
58
65
  createCtor(std::shared_ptr<RNSkPlatformContext> context) {
59
66
  return JSI_HOST_FUNCTION_LAMBDA {
60
- return jsi::Object::createFromHostObject(
61
- runtime, std::make_shared<JsiSkPictureRecorder>(context));
67
+ auto recorder = std::make_shared<JsiSkPictureRecorder>(context);
68
+ return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(runtime, recorder,
69
+ context);
62
70
  };
63
71
  }
64
72
  };
@@ -57,10 +57,13 @@ public:
57
57
  static jsi::Value toValue(jsi::Runtime &runtime,
58
58
  std::shared_ptr<RNSkPlatformContext> context,
59
59
  const SkPoint &point) {
60
- return jsi::Object::createFromHostObject(
61
- runtime, std::make_shared<JsiSkPoint>(std::move(context), point));
60
+ auto pointObj = std::make_shared<JsiSkPoint>(std::move(context), point);
61
+ return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(runtime, pointObj,
62
+ context);
62
63
  }
63
64
 
65
+ size_t getMemoryPressure() const override { return sizeof(SkPoint); }
66
+
64
67
  /**
65
68
  * Creates the function for construction a new instance of the SkPoint
66
69
  * wrapper
@@ -75,9 +78,10 @@ public:
75
78
  SkPoint::Make(arguments[0].asNumber(), arguments[1].asNumber());
76
79
 
77
80
  // Return the newly constructed object
78
- return jsi::Object::createFromHostObject(
79
- runtime,
80
- std::make_shared<JsiSkPoint>(std::move(context), std::move(point)));
81
+ auto pointObj =
82
+ std::make_shared<JsiSkPoint>(std::move(context), std::move(point));
83
+ return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(runtime, pointObj,
84
+ context);
81
85
  };
82
86
  }
83
87
  };
@@ -30,9 +30,10 @@ public:
30
30
  return static_cast<double>(getObject()->getSimpleRadii().y());
31
31
  }
32
32
  JSI_PROPERTY_GET(rect) {
33
- return jsi::Object::createFromHostObject(
34
- runtime,
35
- std::make_shared<JsiSkRect>(getContext(), getObject()->getBounds()));
33
+ auto rectObj =
34
+ std::make_shared<JsiSkRect>(getContext(), getObject()->getBounds());
35
+ return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(runtime, rectObj,
36
+ getContext());
36
37
  }
37
38
 
38
39
  JSI_API_TYPENAME("RRect");
@@ -100,10 +101,13 @@ public:
100
101
  static jsi::Value toValue(jsi::Runtime &runtime,
101
102
  std::shared_ptr<RNSkPlatformContext> context,
102
103
  const SkRRect &rect) {
103
- return jsi::Object::createFromHostObject(
104
- runtime, std::make_shared<JsiSkRRect>(std::move(context), rect));
104
+ auto rrectObj = std::make_shared<JsiSkRRect>(std::move(context), rect);
105
+ return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(runtime, rrectObj,
106
+ context);
105
107
  }
106
108
 
109
+ size_t getMemoryPressure() const override { return sizeof(SkRRect); }
110
+
107
111
  /**
108
112
  * Creates the function for construction a new instance of the SkRect
109
113
  * wrapper
@@ -120,9 +124,10 @@ public:
120
124
  auto ry = arguments[2].asNumber();
121
125
  auto rrect = SkRRect::MakeRectXY(*rect, rx, ry);
122
126
  // Return the newly constructed object
123
- return jsi::Object::createFromHostObject(
124
- runtime,
125
- std::make_shared<JsiSkRRect>(std::move(context), std::move(rrect)));
127
+ auto rrectObj =
128
+ std::make_shared<JsiSkRRect>(std::move(context), std::move(rrect));
129
+ return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(runtime, rrectObj,
130
+ context);
126
131
  };
127
132
  }
128
133
  };
@@ -84,8 +84,10 @@ public:
84
84
  static jsi::Value toValue(jsi::Runtime &runtime,
85
85
  std::shared_ptr<RNSkPlatformContext> context,
86
86
  const SkRSXform &rsxform) {
87
- return jsi::Object::createFromHostObject(
88
- runtime, std::make_shared<JsiSkRSXform>(std::move(context), rsxform));
87
+ auto rsxformObj =
88
+ std::make_shared<JsiSkRSXform>(std::move(context), rsxform);
89
+ return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(runtime, rsxformObj,
90
+ context);
89
91
  }
90
92
 
91
93
  /**
@@ -103,11 +105,14 @@ public:
103
105
  arguments[2].asNumber(), arguments[3].asNumber(),
104
106
  arguments[4].asNumber(), arguments[5].asNumber());
105
107
  // Return the newly constructed object
106
- return jsi::Object::createFromHostObject(
107
- runtime, std::make_shared<JsiSkRSXform>(std::move(context),
108
- std::move(rsxform)));
108
+ auto rsxformObj = std::make_shared<JsiSkRSXform>(std::move(context),
109
+ std::move(rsxform));
110
+ return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(runtime, rsxformObj,
111
+ context);
109
112
  };
110
113
  }
114
+ size_t getMemoryPressure() const override { return sizeof(SkRSXform); }
115
+
111
116
  /**
112
117
  * Creates the function for construction a new instance of the SkRSXform
113
118
  * wrapper
@@ -122,9 +127,10 @@ public:
122
127
  SkRSXform::Make(arguments[0].asNumber(), arguments[1].asNumber(),
123
128
  arguments[2].asNumber(), arguments[3].asNumber());
124
129
  // Return the newly constructed object
125
- return jsi::Object::createFromHostObject(
126
- runtime, std::make_shared<JsiSkRSXform>(std::move(context),
127
- std::move(rsxform)));
130
+ auto rsxformObj = std::make_shared<JsiSkRSXform>(std::move(context),
131
+ std::move(rsxform));
132
+ return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(runtime, rsxformObj,
133
+ context);
128
134
  };
129
135
  }
130
136
  };
@@ -87,17 +87,21 @@ public:
87
87
  static jsi::Value toValue(jsi::Runtime &runtime,
88
88
  std::shared_ptr<RNSkPlatformContext> context,
89
89
  const SkRect &rect) {
90
- return jsi::Object::createFromHostObject(
91
- runtime, std::make_shared<JsiSkRect>(std::move(context), rect));
90
+ auto rectObj = std::make_shared<JsiSkRect>(std::move(context), rect);
91
+ return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(runtime, rectObj,
92
+ context);
92
93
  }
93
94
  static jsi::Value toValue(jsi::Runtime &runtime,
94
95
  std::shared_ptr<RNSkPlatformContext> context,
95
96
  SkRect &&rect) {
96
- return jsi::Object::createFromHostObject(
97
- runtime,
98
- std::make_shared<JsiSkRect>(std::move(context), std::move(rect)));
97
+ auto rectObj =
98
+ std::make_shared<JsiSkRect>(std::move(context), std::move(rect));
99
+ return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(runtime, rectObj,
100
+ context);
99
101
  }
100
102
 
103
+ size_t getMemoryPressure() const override { return sizeof(SkRect); }
104
+
101
105
  /**
102
106
  * Creates the function for construction a new instance of the SkRect
103
107
  * wrapper
@@ -114,9 +118,10 @@ public:
114
118
  arguments[2].asNumber(), arguments[3].asNumber());
115
119
 
116
120
  // Return the newly constructed object
117
- return jsi::Object::createFromHostObject(
118
- runtime,
119
- std::make_shared<JsiSkRect>(std::move(context), std::move(rect)));
121
+ auto rectObj =
122
+ std::make_shared<JsiSkRect>(std::move(context), std::move(rect));
123
+ return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(runtime, rectObj,
124
+ context);
120
125
  };
121
126
  }
122
127
  };
@@ -51,9 +51,10 @@ public:
51
51
  auto shader =
52
52
  getObject()->makeShader(std::move(uniforms), nullptr, 0, matrix);
53
53
 
54
- return jsi::Object::createFromHostObject(
55
- runtime,
56
- std::make_shared<JsiSkShader>(getContext(), std::move(shader)));
54
+ auto shaderObj =
55
+ std::make_shared<JsiSkShader>(getContext(), std::move(shader));
56
+ return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(runtime, shaderObj,
57
+ getContext());
57
58
  }
58
59
 
59
60
  JSI_HOST_FUNCTION(makeShaderWithChildren) {
@@ -81,9 +82,10 @@ public:
81
82
  auto shader = getObject()->makeShader(std::move(uniforms), children.data(),
82
83
  children.size(), matrix);
83
84
 
84
- return jsi::Object::createFromHostObject(
85
- runtime,
86
- std::make_shared<JsiSkShader>(getContext(), std::move(shader)));
85
+ auto shaderObj =
86
+ std::make_shared<JsiSkShader>(getContext(), std::move(shader));
87
+ return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(runtime, shaderObj,
88
+ getContext());
87
89
  }
88
90
 
89
91
  JSI_HOST_FUNCTION(getUniformCount) {
@@ -140,6 +142,8 @@ public:
140
142
  : JsiSkWrappingSkPtrHostObject<SkRuntimeEffect>(std::move(context),
141
143
  std::move(rt)) {}
142
144
 
145
+ size_t getMemoryPressure() const override { return 4096; }
146
+
143
147
  static RuntimeEffectUniform fromUniform(const SkRuntimeEffect::Uniform &u) {
144
148
  RuntimeEffectUniform su;
145
149
  su.rows = u.count; // arrayLength
@@ -26,11 +26,14 @@ public:
26
26
  .c_str());
27
27
  return jsi::Value::null();
28
28
  }
29
- return jsi::Object::createFromHostObject(
30
- runtime,
31
- std::make_shared<JsiSkRuntimeEffect>(getContext(), std::move(effect)));
29
+ auto runtimeEffect =
30
+ std::make_shared<JsiSkRuntimeEffect>(getContext(), std::move(effect));
31
+ return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(runtime, runtimeEffect,
32
+ getContext());
32
33
  }
33
34
 
35
+ size_t getMemoryPressure() const override { return 1024; }
36
+
34
37
  JSI_EXPORT_FUNCTIONS(JSI_EXPORT_FUNC(JsiSkRuntimeEffectFactory, Make))
35
38
 
36
39
  explicit JsiSkRuntimeEffectFactory(