From 91df5a4a0fec66c4e31441c8e168a204ae9856cb Mon Sep 17 00:00:00 2001 From: Samuel Susla Date: Mon, 4 Nov 2024 08:15:12 -0800 Subject: [PATCH] surface setup issues in EventBeat and Scheduler (#47355) Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/47355 changelog: [internal] Reviewed By: rshest Differential Revision: D65333695 fbshipit-source-id: 854dbc3ae52db0093961cbeb81f1f96934eca40d --- .../ReactCommon/react/renderer/core/EventBeat.cpp | 4 ++++ .../react/renderer/scheduler/Scheduler.cpp | 13 +++++++------ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/packages/react-native/ReactCommon/react/renderer/core/EventBeat.cpp b/packages/react-native/ReactCommon/react/renderer/core/EventBeat.cpp index 305c2375224..82f18533a9d 100644 --- a/packages/react-native/ReactCommon/react/renderer/core/EventBeat.cpp +++ b/packages/react-native/ReactCommon/react/renderer/core/EventBeat.cpp @@ -7,6 +7,7 @@ #include "EventBeat.h" +#include #include #include @@ -18,6 +19,9 @@ EventBeat::EventBeat( : ownerBox_(std::move(ownerBox)), runtimeScheduler_(runtimeScheduler) {} void EventBeat::request() const { + react_native_assert( + beatCallback_ && + "Unexpected state: EventBeat::setBeatCallback was not called before EventBeat::request."); isRequested_ = true; } diff --git a/packages/react-native/ReactCommon/react/renderer/scheduler/Scheduler.cpp b/packages/react-native/ReactCommon/react/renderer/scheduler/Scheduler.cpp index 58e2805de36..28998bd034b 100644 --- a/packages/react-native/ReactCommon/react/renderer/scheduler/Scheduler.cpp +++ b/packages/react-native/ReactCommon/react/renderer/scheduler/Scheduler.cpp @@ -50,17 +50,18 @@ Scheduler::Scheduler( auto weakRuntimeScheduler = contextContainer_->find>( "RuntimeScheduler"); - auto runtimeScheduler = weakRuntimeScheduler.has_value() - ? weakRuntimeScheduler.value().lock() - : nullptr; + react_native_assert( + weakRuntimeScheduler.has_value() && + "Unexpected state: RuntimeScheduler was not provided."); - if (runtimeScheduler && ReactNativeFeatureFlags::enableUIConsistency()) { + auto runtimeScheduler = weakRuntimeScheduler.value().lock(); + + if (ReactNativeFeatureFlags::enableUIConsistency()) { runtimeScheduler->setShadowTreeRevisionConsistencyManager( uiManager->getShadowTreeRevisionConsistencyManager()); } - if (runtimeScheduler && - ReactNativeFeatureFlags::enableReportEventPaintTime()) { + if (ReactNativeFeatureFlags::enableReportEventPaintTime()) { runtimeScheduler->setEventTimingDelegate(eventPerformanceLogger_.get()); }