Publish two events for measure callbacks

Summary: Publishing two events will allow us to replace marker functionality completely with events. This also allows us to remove measuring time spent from Yoga itself.

Reviewed By: SidharthGuglani

Differential Revision: D16049810

fbshipit-source-id: 98628a92ed3c94d479e9fbcd53fac90c5f524087
This commit is contained in:
David Aurelio
2019-06-28 09:53:15 -07:00
committed by Facebook Github Bot
parent 2c6a4485f5
commit 73224c62b5
3 changed files with 7 additions and 6 deletions

View File

@@ -134,10 +134,9 @@ void EventTest::listen(const YGNode& node, Event::Type type, Event::Data data) {
events.push_back(createArgs<Event::NodeLayout>(node, data));
break;
case Event::LayoutPassStart:
break;
case Event::LayoutPassEnd:
break;
case Event::NodeMeasure:
case Event::MeasureCallbackStart:
case Event::MeasureCallbackEnd:
break;
}
}

View File

@@ -1642,6 +1642,7 @@ static void YGNodeWithMeasureFuncSetMeasuredDimensions(
} else {
#ifdef YG_ENABLE_EVENTS
auto start = steady_clock::now();
Event::publish<Event::MeasureCallbackStart>(node);
#endif
// Measure the text under the current constraints.
@@ -1661,7 +1662,7 @@ static void YGNodeWithMeasureFuncSetMeasuredDimensions(
auto measureCallbackDuration =
duration_cast<std::chrono::duration<float, std::milli>>(end - start);
Event::publish<Event::NodeMeasure>(
Event::publish<Event::MeasureCallbackEnd>(
node,
{layoutContext,
innerWidth,

View File

@@ -31,7 +31,8 @@ struct Event {
NodeLayout,
LayoutPassStart,
LayoutPassEnd,
NodeMeasure,
MeasureCallbackStart,
MeasureCallbackEnd,
};
class Data;
using Subscriber = void(const YGNode&, Type, Data);
@@ -93,7 +94,7 @@ struct Event::TypedData<Event::LayoutPassEnd> {
};
template <>
struct Event::TypedData<Event::NodeMeasure> {
struct Event::TypedData<Event::MeasureCallbackEnd> {
void* layoutContext;
float width;
YGMeasureMode widthMeasureMode;