Move surface handler registration to Binding.cpp

Summary:
Changelog: [Internal]

Inverts registration of a SurfaceHandler with the scheduler: instead of passing a scheduler to the SurfaceHandlerBinding, we can now query the SurfaceHandler and register it in place.

Reviewed By: JoshuaGross

Differential Revision: D27624541

fbshipit-source-id: db5d7f1375fad72a805309a3fcd5a33080e4a4a7
This commit is contained in:
Andrei Shikov
2021-04-12 13:16:01 -07:00
committed by Facebook GitHub Bot
parent 5cba7c0ce7
commit 214aaf2703
3 changed files with 12 additions and 14 deletions
@@ -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) {
@@ -65,16 +65,6 @@ SurfaceHandlerBinding::initHybrid(
return makeCxxInstance(surfaceId, moduleNameValue);
}
void SurfaceHandlerBinding::registerScheduler(
std::shared_ptr<Scheduler> scheduler) {
scheduler->registerSurface(surfaceHandler_);
}
void SurfaceHandlerBinding::unregisterScheduler(
std::shared_ptr<Scheduler> 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),
@@ -50,6 +50,8 @@ class SurfaceHandlerBinding : public jni::HybridClass<SurfaceHandlerBinding> {
void setProps(NativeMap *props);
SurfaceHandler const &getSurfaceHandler();
private:
mutable better::shared_mutex lifecycleMutex_;
const SurfaceHandler surfaceHandler_;