Skip to content

Commit

Permalink
Remove YGNode::setAndPropogateUseLegacyFlag
Browse files Browse the repository at this point in the history
Summary:
`YGNode::setAndPropogateUseLegacyFlag` was only used for debugging purposes.
Here, we replace it with a free function in `Yoga.cpp`.

Now that we have events, the diffing functionality should go into a separate debugging package and be implemented in terms of an event listener. Let's do that as soon as we can support multiple listeners.

Reviewed By: SidharthGuglani

Differential Revision: D15316863

fbshipit-source-id: db929eba7c2de8aa1550e362dd2c175929c0070e
  • Loading branch information
davidaurelio authored and facebook-github-bot committed May 21, 2019
1 parent 30a0a03 commit 80258b5
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 23 deletions.
7 changes: 0 additions & 7 deletions ReactCommon/yoga/yoga/YGNode.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -539,13 +539,6 @@ bool YGNode::didUseLegacyFlag() {
return didUseLegacyFlag;
}

void YGNode::setAndPropogateUseLegacyFlag(bool useLegacyFlag) {
config_->useLegacyStretchBehaviour = useLegacyFlag;
for_each(children_.begin(), children_.end(), [=](YGNodeRef childNode) {
childNode->getConfig()->useLegacyStretchBehaviour = useLegacyFlag;
});
}

void YGNode::setLayoutDoesLegacyFlagAffectsLayout(
bool doesLegacyFlagAffectsLayout) {
layout_.doesLegacyStretchFlagAffectsLayout = doesLegacyFlagAffectsLayout;
Expand Down
1 change: 0 additions & 1 deletion ReactCommon/yoga/yoga/YGNode.h
Original file line number Diff line number Diff line change
Expand Up @@ -292,7 +292,6 @@ struct YGNode {
const float mainSize,
const float crossSize,
const float ownerWidth);
void setAndPropogateUseLegacyFlag(bool useLegacyFlag);
void setLayoutDoesLegacyFlagAffectsLayout(bool doesLegacyFlagAffectsLayout);
void setLayoutDidUseLegacyFlag(bool didUseLegacyFlag);
void markDirtyAndPropogateDownwards();
Expand Down
37 changes: 22 additions & 15 deletions ReactCommon/yoga/yoga/Yoga.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3992,6 +3992,13 @@ static void YGRoundToPixelGrid(
}
}

static void unsetUseLegacyFlagRecursively(YGNodeRef node) {
node->getConfig()->useLegacyStretchBehaviour = false;
for (auto child : node->getChildren()) {
unsetUseLegacyFlagRecursively(child);
}
}

void YGNodeCalculateLayoutWithContext(
const YGNodeRef node,
const float ownerWidth,
Expand Down Expand Up @@ -4096,16 +4103,16 @@ void YGNodeCalculateLayoutWithContext(
// run experiments.
if (node->getConfig()->shouldDiffLayoutWithoutLegacyStretchBehaviour &&
node->didUseLegacyFlag()) {
const YGNodeRef originalNode = YGNodeDeepClone(node);
originalNode->resolveDimension();
const YGNodeRef nodeWithoutLegacyFlag = YGNodeDeepClone(node);
nodeWithoutLegacyFlag->resolveDimension();
// Recursively mark nodes as dirty
originalNode->markDirtyAndPropogateDownwards();
nodeWithoutLegacyFlag->markDirtyAndPropogateDownwards();
gCurrentGenerationCount++;
// Rerun the layout, and calculate the diff
originalNode->setAndPropogateUseLegacyFlag(false);
unsetUseLegacyFlagRecursively(nodeWithoutLegacyFlag);
YGMarkerLayoutData layoutMarkerData;
if (YGLayoutNodeInternal(
originalNode,
nodeWithoutLegacyFlag,
width,
height,
ownerDirection,
Expand All @@ -4115,37 +4122,37 @@ void YGNodeCalculateLayoutWithContext(
ownerHeight,
true,
"initial",
originalNode->getConfig(),
nodeWithoutLegacyFlag->getConfig(),
layoutMarkerData,
layoutContext)) {
originalNode->setPosition(
originalNode->getLayout().direction,
nodeWithoutLegacyFlag->setPosition(
nodeWithoutLegacyFlag->getLayout().direction,
ownerWidth,
ownerHeight,
ownerWidth);
YGRoundToPixelGrid(
originalNode,
originalNode->getConfig()->pointScaleFactor,
nodeWithoutLegacyFlag,
nodeWithoutLegacyFlag->getConfig()->pointScaleFactor,
0.0f,
0.0f);

// Set whether the two layouts are different or not.
auto neededLegacyStretchBehaviour =
!originalNode->isLayoutTreeEqualToNode(*node);
!nodeWithoutLegacyFlag->isLayoutTreeEqualToNode(*node);
node->setLayoutDoesLegacyFlagAffectsLayout(neededLegacyStretchBehaviour);

#ifdef DEBUG
if (originalNode->getConfig()->printTree) {
if (nodeWithoutLegacyFlag->getConfig()->printTree) {
YGNodePrint(
originalNode,
nodeWithoutLegacyFlag,
(YGPrintOptions)(
YGPrintOptionsLayout | YGPrintOptionsChildren |
YGPrintOptionsStyle));
}
#endif
}
YGConfigFreeRecursive(originalNode);
YGNodeFreeRecursive(originalNode);
YGConfigFreeRecursive(nodeWithoutLegacyFlag);
YGNodeFreeRecursive(nodeWithoutLegacyFlag);
}
}

Expand Down

0 comments on commit 80258b5

Please sign in to comment.