diff --git a/React/Fabric/RCTScheduler.h b/React/Fabric/RCTScheduler.h index b201c0a75f5..c9ee613b821 100644 --- a/React/Fabric/RCTScheduler.h +++ b/React/Fabric/RCTScheduler.h @@ -10,6 +10,7 @@ #import #import +#import #import #import #import @@ -64,6 +65,10 @@ NS_ASSUME_NONNULL_BEGIN - (void)animationTick; +- (void)addEventListener:(std::shared_ptr const &)listener; + +- (void)removeEventListener:(std::shared_ptr const &)listener; + @end NS_ASSUME_NONNULL_END diff --git a/React/Fabric/RCTScheduler.mm b/React/Fabric/RCTScheduler.mm index 4bc19fd9c8c..b8921fdabe2 100644 --- a/React/Fabric/RCTScheduler.mm +++ b/React/Fabric/RCTScheduler.mm @@ -193,4 +193,14 @@ class LayoutAnimationDelegateProxy : public LayoutAnimationStatusDelegate, publi } } +- (void)addEventListener:(std::shared_ptr const &)listener +{ + return _scheduler->addEventListener(listener); +} + +- (void)removeEventListener:(std::shared_ptr const &)listener +{ + return _scheduler->removeEventListener(listener); +} + @end diff --git a/React/Fabric/RCTSurfacePresenter.h b/React/Fabric/RCTSurfacePresenter.h index d9a56ac31cc..8e645be4c41 100644 --- a/React/Fabric/RCTSurfacePresenter.h +++ b/React/Fabric/RCTSurfacePresenter.h @@ -19,6 +19,7 @@ NS_ASSUME_NONNULL_BEGIN @class RCTFabricSurface; @class RCTImageLoader; @class RCTMountingManager; +@class RCTScheduler; /** * Coordinates presenting of React Native Surfaces and represents application @@ -53,6 +54,7 @@ NS_ASSUME_NONNULL_BEGIN - (void)unregisterSurface:(RCTFabricSurface *)surface; @property (readonly) RCTMountingManager *mountingManager; +@property (readonly, nullable) RCTScheduler *scheduler; /* * Allow callers to initialize a new fabric surface without adding Fabric as a Buck dependency. diff --git a/React/Fabric/RCTSurfacePresenter.mm b/React/Fabric/RCTSurfacePresenter.mm index 8ccc496c3de..75e6b2c9833 100644 --- a/React/Fabric/RCTSurfacePresenter.mm +++ b/React/Fabric/RCTSurfacePresenter.mm @@ -115,7 +115,7 @@ static BackgroundExecutor RCTGetBackgroundExecutor() return _mountingManager; } -- (RCTScheduler *_Nullable)_scheduler +- (RCTScheduler *_Nullable)scheduler { std::lock_guard lock(_schedulerAccessMutex); return _scheduler; @@ -151,7 +151,7 @@ static BackgroundExecutor RCTGetBackgroundExecutor() - (void)registerSurface:(RCTFabricSurface *)surface { [_surfaceRegistry registerSurface:surface]; - RCTScheduler *scheduler = [self _scheduler]; + RCTScheduler *scheduler = [self scheduler]; if (scheduler) { [scheduler registerSurface:surface.surfaceHandler]; } @@ -159,7 +159,7 @@ static BackgroundExecutor RCTGetBackgroundExecutor() - (void)unregisterSurface:(RCTFabricSurface *)surface { - RCTScheduler *scheduler = [self _scheduler]; + RCTScheduler *scheduler = [self scheduler]; if (scheduler) { [scheduler unregisterSurface:surface.surfaceHandler]; } @@ -188,7 +188,7 @@ static BackgroundExecutor RCTGetBackgroundExecutor() - (BOOL)synchronouslyUpdateViewOnUIThread:(NSNumber *)reactTag props:(NSDictionary *)props { - RCTScheduler *scheduler = [self _scheduler]; + RCTScheduler *scheduler = [self scheduler]; if (!scheduler) { return NO; } @@ -212,7 +212,7 @@ static BackgroundExecutor RCTGetBackgroundExecutor() - (void)setupAnimationDriverWithSurfaceHandler:(facebook::react::SurfaceHandler const &)surfaceHandler { - [[self _scheduler] setupAnimationDriver:surfaceHandler]; + [[self scheduler] setupAnimationDriver:surfaceHandler]; } - (BOOL)suspend