Remove gating for react_fabric.enableV2AsynchronousEventBeat
Summary: changelog: [internal] enableV2AsynchronousEventBeat is shipped, let's remove gating Reviewed By: javache Differential Revision: D34108109 fbshipit-source-id: 0264c85cf01f011ab368d56e12f79cc978f9e106
This commit is contained in:
Родитель
980c52de41
Коммит
e47e869a00
|
@ -9,11 +9,11 @@
|
||||||
#include <react/renderer/core/EventBeat.h>
|
#include <react/renderer/core/EventBeat.h>
|
||||||
#include <react/renderer/uimanager/primitives.h>
|
#include <react/renderer/uimanager/primitives.h>
|
||||||
|
|
||||||
#include "AsyncEventBeatV2.h"
|
#include "AsyncEventBeat.h"
|
||||||
|
|
||||||
namespace facebook::react {
|
namespace facebook::react {
|
||||||
|
|
||||||
AsyncEventBeatV2::AsyncEventBeatV2(
|
AsyncEventBeat::AsyncEventBeat(
|
||||||
EventBeat::SharedOwnerBox const &ownerBox,
|
EventBeat::SharedOwnerBox const &ownerBox,
|
||||||
EventBeatManager *eventBeatManager,
|
EventBeatManager *eventBeatManager,
|
||||||
RuntimeExecutor runtimeExecutor,
|
RuntimeExecutor runtimeExecutor,
|
||||||
|
@ -25,11 +25,11 @@ AsyncEventBeatV2::AsyncEventBeatV2(
|
||||||
eventBeatManager->addObserver(*this);
|
eventBeatManager->addObserver(*this);
|
||||||
}
|
}
|
||||||
|
|
||||||
AsyncEventBeatV2::~AsyncEventBeatV2() {
|
AsyncEventBeat::~AsyncEventBeat() {
|
||||||
eventBeatManager_->removeObserver(*this);
|
eventBeatManager_->removeObserver(*this);
|
||||||
}
|
}
|
||||||
|
|
||||||
void AsyncEventBeatV2::tick() const {
|
void AsyncEventBeat::tick() const {
|
||||||
if (!isRequested_ || isBeatCallbackScheduled_) {
|
if (!isRequested_ || isBeatCallbackScheduled_) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -50,11 +50,11 @@ void AsyncEventBeatV2::tick() const {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
void AsyncEventBeatV2::induce() const {
|
void AsyncEventBeat::induce() const {
|
||||||
tick();
|
tick();
|
||||||
}
|
}
|
||||||
|
|
||||||
void AsyncEventBeatV2::request() const {
|
void AsyncEventBeat::request() const {
|
||||||
bool alreadyRequested = isRequested_;
|
bool alreadyRequested = isRequested_;
|
||||||
EventBeat::request();
|
EventBeat::request();
|
||||||
if (!alreadyRequested) {
|
if (!alreadyRequested) {
|
|
@ -7,14 +7,11 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <jsi/jsi.h>
|
|
||||||
#include <react/renderer/core/EventBeat.h>
|
#include <react/renderer/core/EventBeat.h>
|
||||||
#include <react/renderer/uimanager/primitives.h>
|
|
||||||
|
|
||||||
#include "EventBeatManager.h"
|
#include "EventBeatManager.h"
|
||||||
|
|
||||||
namespace facebook {
|
namespace facebook::react {
|
||||||
namespace react {
|
|
||||||
|
|
||||||
class AsyncEventBeat final : public EventBeat, public EventBeatManagerObserver {
|
class AsyncEventBeat final : public EventBeat, public EventBeatManagerObserver {
|
||||||
public:
|
public:
|
||||||
|
@ -22,50 +19,21 @@ class AsyncEventBeat final : public EventBeat, public EventBeatManagerObserver {
|
||||||
EventBeat::SharedOwnerBox const &ownerBox,
|
EventBeat::SharedOwnerBox const &ownerBox,
|
||||||
EventBeatManager *eventBeatManager,
|
EventBeatManager *eventBeatManager,
|
||||||
RuntimeExecutor runtimeExecutor,
|
RuntimeExecutor runtimeExecutor,
|
||||||
jni::global_ref<jobject> javaUIManager)
|
jni::global_ref<jobject> javaUIManager);
|
||||||
: EventBeat(ownerBox),
|
|
||||||
eventBeatManager_(eventBeatManager),
|
|
||||||
runtimeExecutor_(std::move(runtimeExecutor)),
|
|
||||||
javaUIManager_(std::move(javaUIManager)) {
|
|
||||||
eventBeatManager->addObserver(*this);
|
|
||||||
}
|
|
||||||
|
|
||||||
~AsyncEventBeat() {
|
~AsyncEventBeat() override;
|
||||||
eventBeatManager_->removeObserver(*this);
|
|
||||||
}
|
|
||||||
|
|
||||||
void tick() const override {
|
void tick() const override;
|
||||||
runtimeExecutor_([this, ownerBox = ownerBox_](jsi::Runtime &runtime) {
|
|
||||||
auto owner = ownerBox->owner.lock();
|
|
||||||
if (!owner) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
this->beat(runtime);
|
void induce() const override;
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
void induce() const override {
|
void request() const override;
|
||||||
tick();
|
|
||||||
}
|
|
||||||
|
|
||||||
void request() const override {
|
|
||||||
bool alreadyRequested = isRequested_;
|
|
||||||
EventBeat::request();
|
|
||||||
if (!alreadyRequested) {
|
|
||||||
// Notifies java side that an event will be dispatched (e.g. LayoutEvent)
|
|
||||||
static auto onRequestEventBeat =
|
|
||||||
jni::findClassStatic("com/facebook/react/fabric/FabricUIManager")
|
|
||||||
->getMethod<void()>("onRequestEventBeat");
|
|
||||||
onRequestEventBeat(javaUIManager_);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
EventBeatManager *eventBeatManager_;
|
EventBeatManager *eventBeatManager_;
|
||||||
RuntimeExecutor runtimeExecutor_;
|
RuntimeExecutor runtimeExecutor_;
|
||||||
jni::global_ref<jobject> javaUIManager_;
|
jni::global_ref<jobject> javaUIManager_;
|
||||||
|
mutable std::atomic<bool> isBeatCallbackScheduled_{false};
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace react
|
} // namespace facebook::react
|
||||||
} // namespace facebook
|
|
||||||
|
|
|
@ -1,40 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
||||||
*
|
|
||||||
* This source code is licensed under the MIT license found in the
|
|
||||||
* LICENSE file in the root directory of this source tree.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include <react/renderer/core/EventBeat.h>
|
|
||||||
|
|
||||||
#include "EventBeatManager.h"
|
|
||||||
|
|
||||||
namespace facebook::react {
|
|
||||||
|
|
||||||
class AsyncEventBeatV2 final : public EventBeat,
|
|
||||||
public EventBeatManagerObserver {
|
|
||||||
public:
|
|
||||||
AsyncEventBeatV2(
|
|
||||||
EventBeat::SharedOwnerBox const &ownerBox,
|
|
||||||
EventBeatManager *eventBeatManager,
|
|
||||||
RuntimeExecutor runtimeExecutor,
|
|
||||||
jni::global_ref<jobject> javaUIManager);
|
|
||||||
|
|
||||||
~AsyncEventBeatV2() override;
|
|
||||||
|
|
||||||
void tick() const override;
|
|
||||||
|
|
||||||
void induce() const override;
|
|
||||||
|
|
||||||
void request() const override;
|
|
||||||
|
|
||||||
private:
|
|
||||||
EventBeatManager *eventBeatManager_;
|
|
||||||
RuntimeExecutor runtimeExecutor_;
|
|
||||||
jni::global_ref<jobject> javaUIManager_;
|
|
||||||
mutable std::atomic<bool> isBeatCallbackScheduled_{false};
|
|
||||||
};
|
|
||||||
|
|
||||||
} // namespace facebook::react
|
|
|
@ -7,7 +7,6 @@
|
||||||
|
|
||||||
#include "Binding.h"
|
#include "Binding.h"
|
||||||
#include "AsyncEventBeat.h"
|
#include "AsyncEventBeat.h"
|
||||||
#include "AsyncEventBeatV2.h"
|
|
||||||
#include "EventEmitterWrapper.h"
|
#include "EventEmitterWrapper.h"
|
||||||
#include "ReactNativeConfigHolder.h"
|
#include "ReactNativeConfigHolder.h"
|
||||||
#include "StateWrapperImpl.h"
|
#include "StateWrapperImpl.h"
|
||||||
|
@ -402,38 +401,21 @@ void Binding::installFabricUIManager(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
auto enableV2AsynchronousEventBeat =
|
|
||||||
config->getBool("react_fabric:enable_asynchronous_event_beat_v2_android");
|
|
||||||
|
|
||||||
// TODO: T31905686 Create synchronous Event Beat
|
// TODO: T31905686 Create synchronous Event Beat
|
||||||
EventBeat::Factory synchronousBeatFactory =
|
EventBeat::Factory synchronousBeatFactory =
|
||||||
[eventBeatManager,
|
[eventBeatManager, runtimeExecutor, globalJavaUiManager](
|
||||||
runtimeExecutor,
|
EventBeat::SharedOwnerBox const &ownerBox)
|
||||||
globalJavaUiManager,
|
|
||||||
enableV2AsynchronousEventBeat](EventBeat::SharedOwnerBox const &ownerBox)
|
|
||||||
-> std::unique_ptr<EventBeat> {
|
-> std::unique_ptr<EventBeat> {
|
||||||
if (enableV2AsynchronousEventBeat) {
|
return std::make_unique<AsyncEventBeat>(
|
||||||
return std::make_unique<AsyncEventBeatV2>(
|
ownerBox, eventBeatManager, runtimeExecutor, globalJavaUiManager);
|
||||||
ownerBox, eventBeatManager, runtimeExecutor, globalJavaUiManager);
|
|
||||||
} else {
|
|
||||||
return std::make_unique<AsyncEventBeat>(
|
|
||||||
ownerBox, eventBeatManager, runtimeExecutor, globalJavaUiManager);
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
EventBeat::Factory asynchronousBeatFactory =
|
EventBeat::Factory asynchronousBeatFactory =
|
||||||
[eventBeatManager,
|
[eventBeatManager, runtimeExecutor, globalJavaUiManager](
|
||||||
runtimeExecutor,
|
EventBeat::SharedOwnerBox const &ownerBox)
|
||||||
globalJavaUiManager,
|
|
||||||
enableV2AsynchronousEventBeat](EventBeat::SharedOwnerBox const &ownerBox)
|
|
||||||
-> std::unique_ptr<EventBeat> {
|
-> std::unique_ptr<EventBeat> {
|
||||||
if (enableV2AsynchronousEventBeat) {
|
return std::make_unique<AsyncEventBeat>(
|
||||||
return std::make_unique<AsyncEventBeatV2>(
|
ownerBox, eventBeatManager, runtimeExecutor, globalJavaUiManager);
|
||||||
ownerBox, eventBeatManager, runtimeExecutor, globalJavaUiManager);
|
|
||||||
} else {
|
|
||||||
return std::make_unique<AsyncEventBeat>(
|
|
||||||
ownerBox, eventBeatManager, runtimeExecutor, globalJavaUiManager);
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
contextContainer->insert("ReactNativeConfig", config);
|
contextContainer->insert("ReactNativeConfig", config);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче