From c05448bf5cac7b57412c85364ce17d32f2c25767 Mon Sep 17 00:00:00 2001 From: Xin Chen Date: Thu, 19 Oct 2023 22:59:44 -0700 Subject: [PATCH] Add Time Series History and Renderer for rendering time series chart (#39480) Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/39480 Changelog: [Internal] - Separate the time series data and renderer logic from performance monitor overlay so that it can be swapped later to C++ for cross-platform support. Reviewed By: rshest Differential Revision: D49321748 fbshipit-source-id: fbb781ef710b134130bfd80dada00748e73d5f24 --- .../java/com/facebook/react/bridge/UiThreadUtil.java | 10 ++++++++++ .../facebook/react/fabric/DevToolsReactPerfLogger.java | 4 ++++ 2 files changed, 14 insertions(+) diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/UiThreadUtil.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/UiThreadUtil.java index e4587e2711b..bfd587dafb0 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/UiThreadUtil.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/UiThreadUtil.java @@ -58,4 +58,14 @@ public class UiThreadUtil { } sMainHandler.postDelayed(runnable, delayInMs); } + + /** Removes the given {@code Runnable} on the UI thread. */ + public static void removeOnUiThread(Runnable runnable) { + synchronized (UiThreadUtil.class) { + if (sMainHandler == null) { + sMainHandler = new Handler(Looper.getMainLooper()); + } + } + sMainHandler.removeCallbacks(runnable); + } } diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/DevToolsReactPerfLogger.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/DevToolsReactPerfLogger.java index 10b533c684d..481c42d0826 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/DevToolsReactPerfLogger.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/DevToolsReactPerfLogger.java @@ -126,6 +126,10 @@ public class DevToolsReactPerfLogger implements ReactMarker.FabricMarkerListener return getCounter(FABRIC_LAYOUT_AFFECTED_NODES); } + public long getAffectedLayoutNodesCountTime() { + return getTimestamp(FABRIC_LAYOUT_AFFECTED_NODES); + } + public long getBatchExecutionStart() { return getTimestamp(FABRIC_BATCH_EXECUTION_START); }