react-native-worklets 0.4.0 → 0.4.2
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.
- package/RNWorklets.podspec +7 -1
- package/apple/worklets/apple/AnimationFrameQueue.mm +18 -20
- package/lib/module/initializers.js +1 -1
- package/lib/module/initializers.js.map +1 -1
- package/lib/module/utils/jsVersion.js +1 -1
- package/lib/typescript/utils/jsVersion.d.ts +1 -1
- package/package.json +1 -1
- package/scripts/worklets_utils.rb +1 -1
- package/src/initializers.ts +3 -3
- package/src/utils/jsVersion.ts +1 -1
package/RNWorklets.podspec
CHANGED
|
@@ -10,7 +10,7 @@ worklets_assert_new_architecture_enabled($new_arch_enabled)
|
|
|
10
10
|
|
|
11
11
|
ios_min_version = '13.4'
|
|
12
12
|
|
|
13
|
-
feature_flags = "-DWORKLETS_FEATURE_FLAGS=\"#{
|
|
13
|
+
feature_flags = "-DWORKLETS_FEATURE_FLAGS=\"#{worklets_get_static_feature_flags()}\""
|
|
14
14
|
version_flags = "-DWORKLETS_VERSION=#{package['version']}"
|
|
15
15
|
|
|
16
16
|
Pod::Spec.new do |s|
|
|
@@ -42,6 +42,12 @@ Pod::Spec.new do |s|
|
|
|
42
42
|
# See https://github.com/facebook/react-native/blob/c925872e72d2422be46670777bfa2111e13c9e4c/packages/react-native/scripts/cocoapods/new_architecture.rb#L71.
|
|
43
43
|
install_modules_dependencies(s)
|
|
44
44
|
|
|
45
|
+
s.dependency 'React-jsi'
|
|
46
|
+
using_hermes = ENV['USE_HERMES'] == nil || ENV['USE_HERMES'] == '1'
|
|
47
|
+
if using_hermes && !$worklets_config[:is_tvos_target]
|
|
48
|
+
s.dependency 'React-hermes'
|
|
49
|
+
end
|
|
50
|
+
|
|
45
51
|
# React Native doesn't expose these flags, but not having them
|
|
46
52
|
# can lead to runtime errors due to ABI mismatches.
|
|
47
53
|
# There's also
|
|
@@ -16,13 +16,6 @@ const auto LOW = CAFrameRateRangeMake(24, 30, 30);
|
|
|
16
16
|
const auto POOR = CAFrameRateRangeMake(10, 24, 24);
|
|
17
17
|
} // namespace FrameRateRange
|
|
18
18
|
|
|
19
|
-
enum FrameRateRangeEnum {
|
|
20
|
-
BEST,
|
|
21
|
-
STANDARD,
|
|
22
|
-
LOW,
|
|
23
|
-
POOR,
|
|
24
|
-
};
|
|
25
|
-
|
|
26
19
|
@implementation AnimationFrameQueue {
|
|
27
20
|
/* DisplayLink is thread safe. */
|
|
28
21
|
WorkletsDisplayLink *displayLink_;
|
|
@@ -30,7 +23,7 @@ enum FrameRateRangeEnum {
|
|
|
30
23
|
std::mutex callbacksMutex_;
|
|
31
24
|
std::chrono::duration<double, std::milli> timeDeltas_[TIME_SAMPLES_AMOUNT];
|
|
32
25
|
int timeDeltaIndex_;
|
|
33
|
-
|
|
26
|
+
CAFrameRateRange currentFrameRate_;
|
|
34
27
|
}
|
|
35
28
|
|
|
36
29
|
typedef void (^AnimationFrameCallback)(WorkletsDisplayLink *displayLink);
|
|
@@ -43,7 +36,7 @@ typedef void (^AnimationFrameCallback)(WorkletsDisplayLink *displayLink);
|
|
|
43
36
|
if constexpr (worklets::StaticFeatureFlags::getFlag("IOS_DYNAMIC_FRAMERATE_ENABLED")) {
|
|
44
37
|
bool supportsProMotion = [UIScreen mainScreen].maximumFramesPerSecond > 60;
|
|
45
38
|
SEL frameCallback = supportsProMotion ? @selector(executeQueueForProMotion:) : @selector(executeQueue:);
|
|
46
|
-
|
|
39
|
+
currentFrameRate_ = supportsProMotion ? FrameRateRange::BEST : FrameRateRange::STANDARD;
|
|
47
40
|
displayLink_ = [WorkletsDisplayLink displayLinkWithTarget:self selector:frameCallback];
|
|
48
41
|
} else {
|
|
49
42
|
displayLink_ = [WorkletsDisplayLink displayLinkWithTarget:self selector:@selector(executeQueue:)];
|
|
@@ -111,19 +104,24 @@ typedef void (^AnimationFrameCallback)(WorkletsDisplayLink *displayLink);
|
|
|
111
104
|
// Perform this on every TIME_SAMPLES_AMOUNT-nth frame instead of each one
|
|
112
105
|
return;
|
|
113
106
|
}
|
|
114
|
-
float
|
|
107
|
+
float averageComputationTime = 0;
|
|
115
108
|
for (int i = 0; i < TIME_SAMPLES_AMOUNT; i++) {
|
|
116
|
-
|
|
109
|
+
averageComputationTime += timeDeltas_[i].count();
|
|
110
|
+
}
|
|
111
|
+
averageComputationTime = averageComputationTime / TIME_SAMPLES_AMOUNT;
|
|
112
|
+
CAFrameRateRange frameRateRange;
|
|
113
|
+
if (averageComputationTime < 8) {
|
|
114
|
+
frameRateRange = FrameRateRange::BEST;
|
|
115
|
+
} else if (averageComputationTime < 16) {
|
|
116
|
+
frameRateRange = FrameRateRange::STANDARD;
|
|
117
|
+
} else if (averageComputationTime < 33) {
|
|
118
|
+
frameRateRange = FrameRateRange::LOW;
|
|
119
|
+
} else {
|
|
120
|
+
frameRateRange = FrameRateRange::POOR;
|
|
117
121
|
}
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
} else if (averageFrameDuration < 16 && curentFrameRate_ != STANDARD) {
|
|
122
|
-
displayLink_.preferredFrameRateRange = FrameRateRange::STANDARD;
|
|
123
|
-
} else if (averageFrameDuration < 33 && curentFrameRate_ != LOW) {
|
|
124
|
-
displayLink_.preferredFrameRateRange = FrameRateRange::LOW;
|
|
125
|
-
} else if (curentFrameRate_ != POOR) {
|
|
126
|
-
displayLink_.preferredFrameRateRange = FrameRateRange::POOR;
|
|
122
|
+
if (currentFrameRate_.preferred != frameRateRange.preferred) {
|
|
123
|
+
displayLink_.preferredFrameRateRange = frameRateRange;
|
|
124
|
+
currentFrameRate_ = frameRateRange;
|
|
127
125
|
}
|
|
128
126
|
}
|
|
129
127
|
|
|
@@ -128,7 +128,7 @@ function initializeWorkletRuntime() {
|
|
|
128
128
|
const modules = require.getModules();
|
|
129
129
|
// @ts-expect-error type not exposed by Metro
|
|
130
130
|
const ReactNativeModuleId = require.resolveWeak('react-native');
|
|
131
|
-
const factory = function (_global,
|
|
131
|
+
const factory = function (_global, _require, _importDefault, _importAll, module, _exports, _dependencyMap) {
|
|
132
132
|
module.exports = new Proxy({}, {
|
|
133
133
|
get: function get(_target, prop) {
|
|
134
134
|
globalThis.console.warn(`You tried to import '${String(prop)}' from 'react-native' module on a Worklet Runtime. Using 'react-native' module on a Worklet Runtime is not allowed.`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["bundleValueUnpacker","setupCallGuard","registerReportFatalRemoteError","IS_JEST","SHOULD_BE_USE_WEB","mockedRequestAnimationFrame","setupRequestAnimationFrame","setupSetImmediate","setupSetInterval","setupSetTimeout","executeOnUIRuntimeSync","runOnJS","setupMicrotasks","isWorkletFunction","registerWorkletsError","WorkletsError","WorkletsModule","capturableConsole","getMemorySafeCapturableConsole","consoleCopy","Object","fromEntries","entries","console","map","methodName","method","methodWrapper","args","name","defineProperty","value","writable","setupConsole","boundCapturableConsole","globalThis","assert","debug","log","warn","error","info","initialized","init","initializeRuntime","initializeRuntimeOnWeb","_WORKLET","initializeWorkletRuntime","initializeRNRuntime","installRNBindingsOnUIRuntime","_WORKLETS_BUNDLE_MODE","__valueUnpacker","__DEV__","testWorklet","Refresh","Proxy","get","__r","modules","require","getModules","ReactNativeModuleId","resolveWeak","factory","_global","
|
|
1
|
+
{"version":3,"names":["bundleValueUnpacker","setupCallGuard","registerReportFatalRemoteError","IS_JEST","SHOULD_BE_USE_WEB","mockedRequestAnimationFrame","setupRequestAnimationFrame","setupSetImmediate","setupSetInterval","setupSetTimeout","executeOnUIRuntimeSync","runOnJS","setupMicrotasks","isWorkletFunction","registerWorkletsError","WorkletsError","WorkletsModule","capturableConsole","getMemorySafeCapturableConsole","consoleCopy","Object","fromEntries","entries","console","map","methodName","method","methodWrapper","args","name","defineProperty","value","writable","setupConsole","boundCapturableConsole","globalThis","assert","debug","log","warn","error","info","initialized","init","initializeRuntime","initializeRuntimeOnWeb","_WORKLET","initializeWorkletRuntime","initializeRNRuntime","installRNBindingsOnUIRuntime","_WORKLETS_BUNDLE_MODE","__valueUnpacker","__DEV__","testWorklet","Refresh","Proxy","get","__r","modules","require","getModules","ReactNativeModuleId","resolveWeak","factory","_global","_require","_importDefault","_importAll","module","_exports","_dependencyMap","exports","_target","prop","String","undefined","mod","dependencyMap","hasError","importedAll","importedDefault","isInitialized","publicModule","set","_log","_getAnimationTimestamp","performance","now","requestAnimationFrame","runtimeBoundCapturableConsole"],"sourceRoot":"../../src","sources":["initializers.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -3,5 +3,5 @@
|
|
|
3
3
|
* version used to build the native part of the library in runtime. Remember to
|
|
4
4
|
* keep this in sync with the version declared in `package.json`
|
|
5
5
|
*/
|
|
6
|
-
export declare const jsVersion = "0.4.
|
|
6
|
+
export declare const jsVersion = "0.4.2";
|
|
7
7
|
//# sourceMappingURL=jsVersion.d.ts.map
|
package/package.json
CHANGED
|
@@ -66,7 +66,7 @@ def worklets_assert_new_architecture_enabled(new_arch_enabled)
|
|
|
66
66
|
end
|
|
67
67
|
end
|
|
68
68
|
|
|
69
|
-
def
|
|
69
|
+
def worklets_get_static_feature_flags()
|
|
70
70
|
feature_flags = {}
|
|
71
71
|
|
|
72
72
|
static_feature_flags_path = File.path('./src/featureFlags/staticFlags.json')
|
package/src/initializers.ts
CHANGED
|
@@ -151,9 +151,9 @@ function initializeWorkletRuntime() {
|
|
|
151
151
|
|
|
152
152
|
const factory = function (
|
|
153
153
|
_global: unknown,
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
154
|
+
_require: unknown,
|
|
155
|
+
_importDefault: unknown,
|
|
156
|
+
_importAll: unknown,
|
|
157
157
|
module: Record<string, unknown>,
|
|
158
158
|
_exports: unknown,
|
|
159
159
|
_dependencyMap: unknown
|
package/src/utils/jsVersion.ts
CHANGED