Fix YGNodeSetConfig causing excessive dirtying
Summary: X-link: https://github.com/facebook/react-native/pull/37316 In Fabric, a ShadowNode may re-initialize YGConfig several times throughout the lifetime of a perpetually cloned Yoga Node. RN sets `pointScaleFactor` lazily, when laying out the rootview. So right now it initializes a config to `pointScaleFactor` of 1.0, sets it, sets a new `pointScaleFactor` on the config, then repeats. This cycles the config between two `pointScaleFactor` values and will excessively dirty the node now that `YGNodeSetConfig` dirties on config change (D45505089) This change makes it so that we retain previously used `pointScaleFactor` when cloning the Yoga nodes. Changelog: [Internal] Reviewed By: rozele Differential Revision: D45669878 fbshipit-source-id: bfd2e185d9264a1cda64e59132960060385e16f1
This commit is contained in:
committed by
Facebook GitHub Bot
parent
b8126cdc6c
commit
a1fbbc6070
@@ -4075,6 +4075,10 @@ YOGA_EXPORT void YGConfigSetPointScaleFactor(
|
||||
}
|
||||
}
|
||||
|
||||
YOGA_EXPORT float YGConfigGetPointScaleFactor(const YGConfigRef config) {
|
||||
return config->getPointScaleFactor();
|
||||
}
|
||||
|
||||
static void YGRoundToPixelGrid(
|
||||
const YGNodeRef node,
|
||||
const double pointScaleFactor,
|
||||
|
@@ -317,6 +317,7 @@ WIN_EXPORT void YGAssertWithConfig(
|
||||
WIN_EXPORT void YGConfigSetPointScaleFactor(
|
||||
YGConfigRef config,
|
||||
float pixelsInPoint);
|
||||
WIN_EXPORT float YGConfigGetPointScaleFactor(YGConfigRef config);
|
||||
|
||||
// Yoga previously had an error where containers would take the maximum space
|
||||
// possible instead of the minimum like they are supposed to. In practice this
|
||||
|
Reference in New Issue
Block a user