@samitouri / QOS-React-2 / commits / 26d70fd334

Add enableAsyncSubtreeAPI to host config

Allows us to control this feature on a per-renderer basis

Andrew Clark committed Apr 17, 2017 at 15:38 UTC 26d70fd3347b7c730644d32b70c4fa752a29a610
3 files changed +7 -1
src/renderers/dom/fiber/ReactDOMFiber.js
+1
@@ -364,6 +364,7 @@ var DOMRenderer = ReactFiberReconciler({
364 scheduleDeferredCallback: ReactDOMFrameScheduling.rIC,
365
366 useSyncScheduling: !ReactDOMFeatureFlags.fiberAsyncScheduling,
367 + enableAsyncSubtreeAPI: ReactDOMFeatureFlags.enableAsyncSubtreeAPI,
368 });
369
370 ReactGenericBatching.injection.injectFiberBatchedUpdates(
src/renderers/shared/fiber/ReactFiberReconciler.js
+1
@@ -115,6 +115,7 @@ export type HostConfig<T, P, I, TI, PI, C, CX, PL> = {
115 resetAfterCommit(): void,
116
117 useSyncScheduling?: boolean,
118 + enableAsyncSubtreeAPI?: boolean,
119 };
120
121 export type Reconciler<C, I, TI> = {
src/renderers/shared/fiber/ReactFiberScheduler.js
+5 -1
@@ -169,6 +169,7 @@ module.exports = function<T, P, I, TI, PI, C, CX, PL>(
169 useSyncScheduling,
170 prepareForCommit,
171 resetAfterCommit,
172 + enableAsyncSubtreeAPI,
173 } = config;
174
175 // The priority level to use when scheduling an update. We use NoWork to
@@ -1347,7 +1348,10 @@ module.exports = function<T, P, I, TI, PI, C, CX, PL>(
1348 function getPriorityContext(fiber: Fiber): PriorityLevel {
1349 let priorityLevel = priorityContext;
1350 if (priorityLevel === NoWork) {
1350 - if (!useSyncScheduling || fiber.contextTag & AsyncUpdates) {
1351 + if (
1352 + !useSyncScheduling ||
1353 + (enableAsyncSubtreeAPI === true && fiber.contextTag & AsyncUpdates)
1354 + ) {
1355 priorityLevel = LowPriority;
1356 } else {
1357 priorityLevel = SynchronousPriority;