From 36e50f22537215eb575c07aba97070e6795201f6 Mon Sep 17 00:00:00 2001 From: Andrei Shikov Date: Fri, 1 Apr 2022 06:42:01 -0700 Subject: [PATCH] Expose UIManager from Scheduler (#33545) Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/33545 Differential Revision: D35314058 fbshipit-source-id: fe7a0feb37da3a691735c4315c64c7bc11c0a89d --- React/Fabric/RCTScheduler.h | 2 ++ React/Fabric/RCTScheduler.mm | 5 +++++ ReactCommon/react/renderer/scheduler/Scheduler.cpp | 4 ++++ ReactCommon/react/renderer/scheduler/Scheduler.h | 3 +++ 4 files changed, 14 insertions(+) diff --git a/React/Fabric/RCTScheduler.h b/React/Fabric/RCTScheduler.h index b86257b4e0837d..2e66f58a4f393b 100644 --- a/React/Fabric/RCTScheduler.h +++ b/React/Fabric/RCTScheduler.h @@ -16,6 +16,7 @@ #import #import #import +#import #import NS_ASSUME_NONNULL_BEGIN @@ -48,6 +49,7 @@ NS_ASSUME_NONNULL_BEGIN @interface RCTScheduler : NSObject @property (atomic, weak, nullable) id delegate; +@property (readonly, nullable) facebook::react::UIManager const *uiManager; - (instancetype)initWithToolbox:(facebook::react::SchedulerToolbox)toolbox; diff --git a/React/Fabric/RCTScheduler.mm b/React/Fabric/RCTScheduler.mm index 3cc407bc40be80..075e4edb32fe61 100644 --- a/React/Fabric/RCTScheduler.mm +++ b/React/Fabric/RCTScheduler.mm @@ -203,4 +203,9 @@ - (void)removeEventListener:(std::shared_ptr)listener return _scheduler->removeEventListener(listener); } +- (facebook::react::UIManager const *)uiManager +{ + return _scheduler->getUIManager().get(); +} + @end diff --git a/ReactCommon/react/renderer/scheduler/Scheduler.cpp b/ReactCommon/react/renderer/scheduler/Scheduler.cpp index dd1c9999c667db..edc2bd03fba9bc 100644 --- a/ReactCommon/react/renderer/scheduler/Scheduler.cpp +++ b/ReactCommon/react/renderer/scheduler/Scheduler.cpp @@ -375,6 +375,10 @@ ContextContainer::Shared Scheduler::getContextContainer() const { return contextContainer_; } +std::shared_ptr Scheduler::getUIManager() const { + return uiManager_; +} + void Scheduler::addEventListener(std::shared_ptr listener) { eventListeners_.addListener(listener); } diff --git a/ReactCommon/react/renderer/scheduler/Scheduler.h b/ReactCommon/react/renderer/scheduler/Scheduler.h index e95f598c136cf7..7fc991c5a4ee07 100644 --- a/ReactCommon/react/renderer/scheduler/Scheduler.h +++ b/ReactCommon/react/renderer/scheduler/Scheduler.h @@ -108,6 +108,9 @@ class Scheduler final : public UIManagerDelegate { #pragma mark - ContextContainer ContextContainer::Shared getContextContainer() const; +#pragma mark - UIManager + std::shared_ptr getUIManager() const; + #pragma mark - Event listeners void addEventListener(std::shared_ptr listener); void removeEventListener(std::shared_ptr listener);