From b449c251831df3a3a343065cd0bcd5252ce76a18 Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Thu, 26 May 2016 16:20:00 +0300 Subject: [PATCH] use thread-safe AtomicInteger because it's used from the other thread after all --- .../src/com/intellij/ide/IdeEventQueue.java | 29 ++++--------------- 1 file changed, 5 insertions(+), 24 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/ide/IdeEventQueue.java b/platform/platform-impl/src/com/intellij/ide/IdeEventQueue.java index 049a2dbda779..3a68cee39ef4 100644 --- a/platform/platform-impl/src/com/intellij/ide/IdeEventQueue.java +++ b/platform/platform-impl/src/com/intellij/ide/IdeEventQueue.java @@ -63,6 +63,7 @@ import java.util.LinkedHashSet; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.concurrent.atomic.AtomicInteger; /** * @author Vladimir Kondratyev @@ -78,36 +79,23 @@ public class IdeEventQueue extends EventQueue { private final Object myLock = new Object(); private final List myIdleListeners = ContainerUtil.createLockFreeCopyOnWriteList(); - private final List myActivityListeners = ContainerUtil.createLockFreeCopyOnWriteList(); - private final Alarm myIdleRequestsAlarm = new Alarm(); - private final Alarm myIdleTimeCounterAlarm = new Alarm(); - private long myIdleTime; - private final Map myListener2Request = new HashMap(); // IdleListener -> MyFireIdleRequest - private final IdeKeyEventDispatcher myKeyEventDispatcher = new IdeKeyEventDispatcher(this); - private final IdeMouseEventDispatcher myMouseEventDispatcher = new IdeMouseEventDispatcher(); - private final IdePopupManager myPopupManager = new IdePopupManager(); - - private final ToolkitBugsProcessor myToolkitBugsProcessor = new ToolkitBugsProcessor(); - private boolean mySuspendMode; - /** * We exit from suspend mode when focus owner changes and no more WindowEvent.WINDOW_OPENED events *

* in the queue. If WINDOW_OPENED event does exists in the queues then we restart the alarm. */ private Component myFocusOwner; - private final Runnable myExitSuspendModeRunnable = new ExitSuspendModeRunnable(); /** @@ -123,24 +111,17 @@ public class IdeEventQueue extends EventQueue { * Swing event. */ private int myEventCount; - private int myKeyboardEventsInTheQueue; // accessed in EDT only - + private final AtomicInteger myKeyboardEventsInTheQueue = new AtomicInteger(); private boolean myIsInInputEvent; - private AWTEvent myCurrentEvent; - private long myLastActiveTime; - private WindowManagerEx myWindowManager; - private final Set myDispatchers = new LinkedHashSet(); private final Set myPostProcessors = new LinkedHashSet(); private final Set myReady = ContainerUtil.newHashSet(); - private boolean myKeyboardBusy; private boolean myDispatchingFocusEvent; private boolean myWinMetaPressed; - private int myInputMethodLock; private static class IdeEventQueueHolder { @@ -407,7 +388,7 @@ public class IdeEventQueue extends EventQueue { } finally { if (isKeyboardEvent(e)) { - myKeyboardEventsInTheQueue--; + myKeyboardEventsInTheQueue.decrementAndGet(); } } } @@ -594,7 +575,7 @@ public class IdeEventQueue extends EventQueue { enterSuspendModeIfNeeded(e); } - myKeyboardBusy = myKeyboardEventsInTheQueue != 0; + myKeyboardBusy = myKeyboardEventsInTheQueue.get() != 0; if (e instanceof KeyEvent) { if (e.getID() == KeyEvent.KEY_RELEASED && ((KeyEvent)e).getKeyCode() == KeyEvent.VK_SHIFT) { @@ -1158,7 +1139,7 @@ public class IdeEventQueue extends EventQueue { public void postEvent(@NotNull AWTEvent event) { myFrequentEventDetector.eventHappened(event); if (isKeyboardEvent(event)) { - myKeyboardEventsInTheQueue++; + myKeyboardEventsInTheQueue.incrementAndGet(); } super.postEvent(event); }