mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Expose scheduler through RCTSurfacePresenter
Summary: Exposes event listener through iOS scheduler wrapper (`RCTScheduler`) and exposes scheduler itself through `RCTSurfacePresenter`. Changelog: [Changed] Exposed `RCTScheduler` to allow setting event listeners. Reviewed By: philIip Differential Revision: D35313398 fbshipit-source-id: 794179d47f407fee5692a98b13ac08f92e85a61c
This commit is contained in:
committed by
Facebook GitHub Bot
parent
1730949e94
commit
614aa86916
@@ -10,6 +10,7 @@
|
||||
|
||||
#import <react/renderer/componentregistry/ComponentDescriptorFactory.h>
|
||||
#import <react/renderer/core/ComponentDescriptor.h>
|
||||
#import <react/renderer/core/EventListener.h>
|
||||
#import <react/renderer/core/LayoutConstraints.h>
|
||||
#import <react/renderer/core/LayoutContext.h>
|
||||
#import <react/renderer/mounting/MountingCoordinator.h>
|
||||
@@ -64,6 +65,10 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
- (void)animationTick;
|
||||
|
||||
- (void)addEventListener:(std::shared_ptr<facebook::react::EventListener> const &)listener;
|
||||
|
||||
- (void)removeEventListener:(std::shared_ptr<facebook::react::EventListener> const &)listener;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
||||
@@ -193,4 +193,14 @@ class LayoutAnimationDelegateProxy : public LayoutAnimationStatusDelegate, publi
|
||||
}
|
||||
}
|
||||
|
||||
- (void)addEventListener:(std::shared_ptr<EventListener> const &)listener
|
||||
{
|
||||
return _scheduler->addEventListener(listener);
|
||||
}
|
||||
|
||||
- (void)removeEventListener:(std::shared_ptr<EventListener> const &)listener
|
||||
{
|
||||
return _scheduler->removeEventListener(listener);
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -115,7 +115,7 @@ static BackgroundExecutor RCTGetBackgroundExecutor()
|
||||
return _mountingManager;
|
||||
}
|
||||
|
||||
- (RCTScheduler *_Nullable)_scheduler
|
||||
- (RCTScheduler *_Nullable)scheduler
|
||||
{
|
||||
std::lock_guard<std::mutex> 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
|
||||
|
||||
Reference in New Issue
Block a user