mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Do not retain RuntimeScheduler beyond Runtime's lifetime
Summary: changelog: [internal] Retaining RuntimeScheduler beyond Runtime's lifetime can lead to crashes. Reviewed By: ShikaSD Differential Revision: D31084763 fbshipit-source-id: df6dd6fcf5aa224b9465ed7df1e64ad0ca964510
This commit is contained in:
committed by
Facebook GitHub Bot
parent
a7ff7229f0
commit
9a308697e2
@@ -529,7 +529,7 @@ void Binding::installFabricUIManager(
|
||||
auto runtimeExecutor = runtimeExecutorHolder->cthis()->get();
|
||||
|
||||
if (runtimeSchedulerHolder) {
|
||||
auto runtimeScheduler = runtimeSchedulerHolder->cthis()->get();
|
||||
auto runtimeScheduler = runtimeSchedulerHolder->cthis()->get().lock();
|
||||
if (runtimeScheduler) {
|
||||
runtimeScheduler->setEnableYielding(config->getBool(
|
||||
"react_native_new_architecture:runtimescheduler_enable_yielding_android"));
|
||||
|
||||
@@ -11,10 +11,10 @@ namespace facebook {
|
||||
namespace react {
|
||||
|
||||
JRuntimeScheduler::JRuntimeScheduler(
|
||||
std::shared_ptr<RuntimeScheduler> const &runtimeScheduler)
|
||||
std::weak_ptr<RuntimeScheduler> runtimeScheduler)
|
||||
: runtimeScheduler_(runtimeScheduler) {}
|
||||
|
||||
std::shared_ptr<RuntimeScheduler> JRuntimeScheduler::get() {
|
||||
std::weak_ptr<RuntimeScheduler> JRuntimeScheduler::get() {
|
||||
return runtimeScheduler_;
|
||||
}
|
||||
|
||||
|
||||
@@ -18,12 +18,12 @@ class JRuntimeScheduler : public jni::HybridClass<JRuntimeScheduler> {
|
||||
static auto constexpr kJavaDescriptor =
|
||||
"Lcom/facebook/react/bridge/RuntimeScheduler;";
|
||||
|
||||
std::shared_ptr<RuntimeScheduler> get();
|
||||
std::weak_ptr<RuntimeScheduler> get();
|
||||
|
||||
private:
|
||||
friend HybridBase;
|
||||
JRuntimeScheduler(std::shared_ptr<RuntimeScheduler> const &runtimeScheduler);
|
||||
std::shared_ptr<RuntimeScheduler> runtimeScheduler_;
|
||||
JRuntimeScheduler(std::weak_ptr<RuntimeScheduler> runtimeScheduler);
|
||||
std::weak_ptr<RuntimeScheduler> runtimeScheduler_;
|
||||
};
|
||||
|
||||
} // namespace react
|
||||
|
||||
Reference in New Issue
Block a user