From f7c209cd54cf336a8c500077537f5f10f8eda360 Mon Sep 17 00:00:00 2001 From: David Vacca Date: Mon, 21 Dec 2020 15:06:05 -0800 Subject: [PATCH] Fix racecondition in registration of event listeners Summary: This diff fixes a racecondition in registration of event listeners. mPostEventDispatchListeners is accessed from different threads, most of the times this variable is used to executed the listeners. It is only written during initialization and turn down of the renderer. changelog: [internal] Reviewed By: PeteTheHeat Differential Revision: D25667988 fbshipit-source-id: 1bf95f5193d55a737bad9403206cc3320185b8cb --- .../facebook/react/uimanager/events/EventDispatcherImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventDispatcherImpl.java b/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventDispatcherImpl.java index 9754b2de085..6f1fd9730b2 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventDispatcherImpl.java +++ b/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventDispatcherImpl.java @@ -20,7 +20,6 @@ import com.facebook.systrace.Systrace; import java.util.ArrayList; import java.util.Arrays; import java.util.Comparator; -import java.util.List; import java.util.Map; import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.atomic.AtomicInteger; @@ -91,7 +90,8 @@ public class EventDispatcherImpl implements EventDispatcher, LifecycleEventListe private final ArrayList mEventStaging = new ArrayList<>(); private final CopyOnWriteArrayList mListeners = new CopyOnWriteArrayList<>(); - private final List mPostEventDispatchListeners = new ArrayList<>(); + private final CopyOnWriteArrayList mPostEventDispatchListeners = + new CopyOnWriteArrayList<>(); private final ScheduleDispatchFrameCallback mCurrentFrameCallback = new ScheduleDispatchFrameCallback(); private final AtomicInteger mHasDispatchScheduledCount = new AtomicInteger();