diff --git a/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/Binding.cpp b/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/Binding.cpp index 847d3f10716..192f8493f94 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/Binding.cpp +++ b/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/Binding.cpp @@ -376,12 +376,14 @@ void Binding::stopSurface(jint surfaceId) { } } -void Binding::registerSurface(SurfaceHandlerBinding *surfaceHandler) { - surfaceHandler->registerScheduler(getScheduler()); +void Binding::registerSurface(SurfaceHandlerBinding *surfaceHandlerBinding) { + auto scheduler = getScheduler(); + scheduler->registerSurface(surfaceHandlerBinding->getSurfaceHandler()); } -void Binding::unregisterSurface(SurfaceHandlerBinding *surfaceHandler) { - surfaceHandler->unregisterScheduler(getScheduler()); +void Binding::unregisterSurface(SurfaceHandlerBinding *surfaceHandlerBinding) { + auto scheduler = getScheduler(); + scheduler->unregisterSurface(surfaceHandlerBinding->getSurfaceHandler()); } static inline float scale(Float value, Float pointScaleFactor) { diff --git a/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/SurfaceHandlerBinding.cpp b/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/SurfaceHandlerBinding.cpp index 96affa4b750..0df81d2a899 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/SurfaceHandlerBinding.cpp +++ b/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/SurfaceHandlerBinding.cpp @@ -65,16 +65,6 @@ SurfaceHandlerBinding::initHybrid( return makeCxxInstance(surfaceId, moduleNameValue); } -void SurfaceHandlerBinding::registerScheduler( - std::shared_ptr scheduler) { - scheduler->registerSurface(surfaceHandler_); -} - -void SurfaceHandlerBinding::unregisterScheduler( - std::shared_ptr scheduler) { - scheduler->unregisterSurface(surfaceHandler_); -} - void SurfaceHandlerBinding::setLayoutConstraints( jfloat minWidth, jfloat maxWidth, @@ -103,6 +93,10 @@ void SurfaceHandlerBinding::setProps(NativeMap *props) { surfaceHandler_.setProps(props->consume()); } +SurfaceHandler const &SurfaceHandlerBinding::getSurfaceHandler() { + return surfaceHandler_; +} + void SurfaceHandlerBinding::registerNatives() { registerHybrid({ makeNativeMethod("initHybrid", SurfaceHandlerBinding::initHybrid), diff --git a/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/SurfaceHandlerBinding.h b/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/SurfaceHandlerBinding.h index 24f41c950df..27158eb2880 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/SurfaceHandlerBinding.h +++ b/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/SurfaceHandlerBinding.h @@ -50,6 +50,8 @@ class SurfaceHandlerBinding : public jni::HybridClass { void setProps(NativeMap *props); + SurfaceHandler const &getSurfaceHandler(); + private: mutable better::shared_mutex lifecycleMutex_; const SurfaceHandler surfaceHandler_;