From 50b171ff8b5440bf9d7cc13f6666ebce190d951f Mon Sep 17 00:00:00 2001 From: Valentin Shergin Date: Thu, 7 Nov 2019 09:41:11 -0800 Subject: [PATCH] Fabric: Removing scheduling to JS thread from EventBeatManager.java Summary: The C++ counterpart of EventBeatManager uses RuntimeExecutor for that, so it's redundant to do that in EventBeatManager.java. Changelog: [Internal] Fabric-specific internal change. Reviewed By: sammy-SC Differential Revision: D18307657 fbshipit-source-id: 65823b25d691a56540247d317e3c0e86685150c8 --- .../react/fabric/events/EventBeatManager.java | 21 ++----------------- .../react/fabric/jni/EventBeatManager.cpp | 4 ++-- .../react/fabric/jni/EventBeatManager.h | 7 +++++-- 3 files changed, 9 insertions(+), 23 deletions(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/fabric/events/EventBeatManager.java b/ReactAndroid/src/main/java/com/facebook/react/fabric/events/EventBeatManager.java index 61e763f1eb5..b582be2c020 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/fabric/events/EventBeatManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/fabric/events/EventBeatManager.java @@ -30,7 +30,7 @@ public class EventBeatManager implements BatchEventDispatchedListener { private static native HybridData initHybrid(); - private native void beat(); + private native void tick(); public EventBeatManager(@NonNull ReactApplicationContext reactApplicationContext) { mHybridData = initHybrid(); @@ -39,23 +39,6 @@ public class EventBeatManager implements BatchEventDispatchedListener { @Override public void onBatchEventDispatched() { - dispatchEventsAsync(); - } - - /** - * Induce a beat in the AsyncEventBeat, calling the JNI method {@link #beat()} in the JS thread. - */ - private void dispatchEventsAsync() { - if (mReactApplicationContext.isOnJSQueueThread()) { - beat(); - } else { - mReactApplicationContext.runOnJSQueueThread( - new Runnable() { - @Override - public void run() { - beat(); - } - }); - } + tick(); } } diff --git a/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/EventBeatManager.cpp b/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/EventBeatManager.cpp index e651d128389..b92482e5f90 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/EventBeatManager.cpp +++ b/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/EventBeatManager.cpp @@ -37,7 +37,7 @@ void EventBeatManager::unregisterEventBeat(EventBeat* eventBeat) const { registeredEventBeats_.erase(eventBeat); } -void EventBeatManager::beat() { +void EventBeatManager::tick() { std::lock_guard lock(mutex_); for (const auto eventBeat : registeredEventBeats_) { @@ -50,7 +50,7 @@ void EventBeatManager::beat() { void EventBeatManager::registerNatives() { registerHybrid({ makeNativeMethod("initHybrid", EventBeatManager::initHybrid), - makeNativeMethod("beat", EventBeatManager::beat), + makeNativeMethod("tick", EventBeatManager::tick), }); } diff --git a/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/EventBeatManager.h b/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/EventBeatManager.h index 76f2e6e5bca..da1f649c641 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/EventBeatManager.h +++ b/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/EventBeatManager.h @@ -34,11 +34,14 @@ class EventBeatManager : public jni::HybridClass { void unregisterEventBeat(EventBeat* eventBeat) const; - void beat(); - EventBeatManager(jni::alias_ref jhybridobject); private: + /* + * Called by Java counterpart at the end of every run loop tick. + */ + void tick(); + RuntimeExecutor runtimeExecutor_; jni::alias_ref jhybridobject_;