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 коммит произвёл Facebook Github Bot
Родитель 9a84970c35
Коммит 2985ddbc33
2 изменённых файлов: 5 добавлений и 3 удалений

Просмотреть файл

@ -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,

Просмотреть файл

@ -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;