pass cachedLayout and cachedMeasure measures to plugin
Summary: Passing whether layout cache or measure cache was used or not Reviewed By: davidaurelio Differential Revision: D15920937 fbshipit-source-id: a6728e7af07ea228a285f824fbdfddc8130c5990
This commit is contained in:
committed by
Facebook Github Bot
parent
2dc5a16d1f
commit
39996512fc
34
java/com/facebook/yoga/YogaLayoutType.java
Normal file
34
java/com/facebook/yoga/YogaLayoutType.java
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||||
|
*
|
||||||
|
* This source code is licensed under the MIT license found in the LICENSE
|
||||||
|
* file in the root directory of this source tree.
|
||||||
|
*/
|
||||||
|
package com.facebook.yoga;
|
||||||
|
|
||||||
|
public enum YogaLayoutType {
|
||||||
|
LAYOUT(0),
|
||||||
|
MEASURE(1),
|
||||||
|
CACHED_LAYOUT(2),
|
||||||
|
CACHED_MEASURE(3);
|
||||||
|
|
||||||
|
private final int mIntValue;
|
||||||
|
|
||||||
|
YogaLayoutType(int intValue) {
|
||||||
|
mIntValue = intValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int intValue() {
|
||||||
|
return mIntValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static YogaLayoutType fromInt(int value) {
|
||||||
|
switch (value) {
|
||||||
|
case 0: return LAYOUT;
|
||||||
|
case 1: return MEASURE;
|
||||||
|
case 2: return CACHED_LAYOUT;
|
||||||
|
case 3: return CACHED_MEASURE;
|
||||||
|
default: throw new IllegalArgumentException("Unknown enum value: " + value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@@ -3928,7 +3928,16 @@ bool YGLayoutNodeInternal(
|
|||||||
layout->generationCount = gCurrentGenerationCount;
|
layout->generationCount = gCurrentGenerationCount;
|
||||||
|
|
||||||
#ifdef YG_ENABLE_EVENTS
|
#ifdef YG_ENABLE_EVENTS
|
||||||
Event::publish<Event::NodeLayout>(node, {performLayout, layoutContext});
|
LayoutType layoutType;
|
||||||
|
if (performLayout) {
|
||||||
|
layoutType = !needToVisitNode && cachedResults == &layout->cachedLayout
|
||||||
|
? LayoutType::kCachedLayout
|
||||||
|
: LayoutType::kLayout;
|
||||||
|
} else {
|
||||||
|
layoutType = cachedResults != nullptr ? LayoutType::kCachedMeasure
|
||||||
|
: LayoutType::kMeasure;
|
||||||
|
}
|
||||||
|
Event::publish<Event::NodeLayout>(node, {layoutType, layoutContext});
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return (needToVisitNode || cachedResults == nullptr);
|
return (needToVisitNode || cachedResults == nullptr);
|
||||||
|
@@ -17,6 +17,13 @@ struct YGNode;
|
|||||||
namespace facebook {
|
namespace facebook {
|
||||||
namespace yoga {
|
namespace yoga {
|
||||||
|
|
||||||
|
enum LayoutType : int {
|
||||||
|
kLayout = 0,
|
||||||
|
kMeasure = 1,
|
||||||
|
kCachedLayout = 2,
|
||||||
|
kCachedMeasure = 3
|
||||||
|
};
|
||||||
|
|
||||||
struct Event {
|
struct Event {
|
||||||
enum Type {
|
enum Type {
|
||||||
NodeAllocation,
|
NodeAllocation,
|
||||||
@@ -99,7 +106,7 @@ struct Event::TypedData<Event::NodeMeasure> {
|
|||||||
|
|
||||||
template <>
|
template <>
|
||||||
struct Event::TypedData<Event::NodeLayout> {
|
struct Event::TypedData<Event::NodeLayout> {
|
||||||
bool performLayout;
|
LayoutType layoutType;
|
||||||
void* layoutContext;
|
void* layoutContext;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user