Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(🖼️): remove uncessary JSI calls #2934

Merged
merged 2 commits into from
Feb 1, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions apps/paper/ios/Podfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -1283,7 +1283,7 @@ PODS:
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- Yoga
- react-native-wgpu (0.1.20):
- react-native-wgpu (0.1.19):
- DoubleConversion
- glog
- hermes-engine
Expand Down Expand Up @@ -1957,9 +1957,9 @@ SPEC CHECKSUMS:
React-Mapbuffer: 1c08607305558666fd16678b85ef135e455d5c96
React-microtasksnativemodule: 87b8de96f937faefece8afd2cb3a518321b2ef99
react-native-safe-area-context: ab8f4a3d8180913bd78ae75dd599c94cce3d5e9a
react-native-skia: abdd2ba5abed61445a25d9461b0a87bc08c50f64
react-native-skia: 30bdfaf0c7d9c38a715f29f36102ba3e60ff3329
react-native-slider: 97ce0bd921f40de79cead9754546d5e4e7ba44f8
react-native-wgpu: efaa8c7c3ae15b346d887d13cca2fe72ed5ea105
react-native-wgpu: 8d0437a304318e0e3d6ccbfed2a39880f8eae4dd
React-nativeconfig: 57781b79e11d5af7573e6f77cbf1143b71802a6d
React-NativeModulesApple: 7ff2e2cfb2e5fa5bdedcecf28ce37e696c6ef1e1
React-perflogger: 8a360ccf603de6ddbe9ff8f54383146d26e6c936
Expand Down
12 changes: 8 additions & 4 deletions packages/skia/cpp/api/recorder/JsiRecorder.h
Original file line number Diff line number Diff line change
Expand Up @@ -50,11 +50,15 @@ class JsiRecorder : public JsiSkWrappingSharedPtrHostObject<Recorder> {
}

JSI_HOST_FUNCTION(play) {
auto jsiCanvas =
arguments[0].asObject(runtime).asHostObject<JsiSkCanvas>(runtime);
DrawingCtx ctx(jsiCanvas->getCanvas());
SkPictureRecorder pictureRecorder;
SkISize size = SkISize::Make(2'000'000, 2'000'000);
SkRect rect = SkRect::Make(size);
auto canvas = pictureRecorder.beginRecording(rect, nullptr);
DrawingCtx ctx(canvas);
getObject()->play(&ctx);
return jsi::Value::undefined();
auto picture = pictureRecorder.finishRecordingAsPicture();
return jsi::Object::createFromHostObject(
runtime, std::make_shared<JsiSkPicture>(getContext(), picture));
}

JSI_HOST_FUNCTION(applyUpdates) {
Expand Down
4 changes: 2 additions & 2 deletions packages/skia/src/skia/types/Recorder.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ import type {
} from "../../dom/types";
import type { AnimatedProps } from "../../renderer/processors/Animations/Animations";

import type { SkCanvas } from "./Canvas";
import type { SkPicture } from "./Picture";

export interface BaseRecorder {
saveGroup(): void;
Expand Down Expand Up @@ -86,6 +86,6 @@ export interface BaseRecorder {
}

export interface JsiRecorder extends BaseRecorder {
play(canvas: SkCanvas): void;
play(): SkPicture;
applyUpdates(variables: SharedValue<unknown>[]): void;
}
17 changes: 4 additions & 13 deletions packages/skia/src/sksg/Container.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,24 +29,15 @@ const drawOnscreen = (Skia: Skia, nativeId: number, recording: Recording) => {
picture.dispose();
};

const nativeDrawOnscreen = (
Skia: Skia,
nativeId: number,
recorder: JsiRecorder
) => {
const nativeDrawOnscreen = (nativeId: number, recorder: JsiRecorder) => {
"worklet";

const rec = Skia.PictureRecorder();
const canvas = rec.beginRecording();
//const start = performance.now();

recorder.play(canvas);
const picture = rec.finishRecordingAsPicture();
const picture = recorder.play();
//const end = performance.now();
//console.log("Recording time: ", end - start);
SkiaViewApi.setJsiProperty(nativeId, "picture", picture);
rec.dispose();
picture.dispose();
};

export abstract class Container {
Expand Down Expand Up @@ -154,12 +145,12 @@ class NativeReanimatedContainer extends Container {
this.mapperId = Rea.startMapper(() => {
"worklet";
sharedRecorder.applyUpdates(sharedValues);
nativeDrawOnscreen(Skia, nativeId, sharedRecorder);
nativeDrawOnscreen(nativeId, sharedRecorder);
}, sharedValues);
}
Rea.runOnUI(() => {
"worklet";
nativeDrawOnscreen(Skia, nativeId, sharedRecorder);
nativeDrawOnscreen(nativeId, sharedRecorder);
})();
}
}
Expand Down
Loading