fix LaterInvocator.leaveAllModals

This commit is contained in:
peter
2016-04-06 13:21:46 +02:00
parent ade5fd1cb8
commit 0d5ff8fe89
@@ -80,7 +80,7 @@ public class LaterInvocator {
}
private static final List<Object> ourModalEntities = ContainerUtil.createLockFreeCopyOnWriteList();
private static Stack<ModalityState> ourModalityStack = new Stack<>(ModalityState.NON_MODAL);
private static final Stack<ModalityState> ourModalityStack = new Stack<>(ModalityState.NON_MODAL);
private static final List<RunnableInfo> ourQueue = new ArrayList<RunnableInfo>(); //protected by LOCK
private static volatile int ourQueueSkipCount; // optimization
private static final FlushQueue ourFlushQueueRunnable = new FlushQueue();
@@ -210,9 +210,10 @@ public class LaterInvocator {
ourModalityStateMulticaster.getMulticaster().beforeModalityStateChanged(false);
boolean removed = ourModalEntities.remove(modalEntity);
ourModalityStack.pop();
if (ourModalityStack.size() > 1) {
ourModalityStack.pop();
}
LOG.assertTrue(removed, modalEntity);
LOG.assertTrue(!ourModalityStack.isEmpty(), modalEntity);
cleanupQueueForModal(modalEntity);
ourQueueSkipCount = 0;
requestFlush();
@@ -236,6 +237,10 @@ public class LaterInvocator {
@TestOnly
static void leaveAllModals() {
ourModalEntities.clear();
while (ourModalityStack.size() > 1) {
ourModalityStack.pop();
}
LOG.assertTrue(getCurrentModalityState() == ModalityState.NON_MODAL, getCurrentModalityState());
ourQueueSkipCount = 0;
requestFlush();
}