From 7178ea09ded9d52f50de5e6f7fdd2f2504ada92d Mon Sep 17 00:00:00 2001 From: John Cortell Date: Thu, 17 Sep 2009 16:48:29 +0000 Subject: [PATCH] [289766] Bug tracing VM Provider event handler --- .../cdt/dsf/ui/viewmodel/AbstractVMProvider.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/ui/viewmodel/AbstractVMProvider.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/ui/viewmodel/AbstractVMProvider.java index 1dd92ca3cad..7e397e25051 100644 --- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/ui/viewmodel/AbstractVMProvider.java +++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/ui/viewmodel/AbstractVMProvider.java @@ -271,10 +271,8 @@ abstract public class AbstractVMProvider implements IVMProvider, IVMEventListene } if (!fProxyEventQueues.containsKey(proxyStrategy)) { fProxyEventQueues.put(proxyStrategy, new ModelProxyEventQueue()); - if (DEBUG_DELTA && (DEBUG_PRESENTATION_ID == null || getPresentationContext().getId().equals(DEBUG_PRESENTATION_ID))) { - DsfUIPlugin.debug("eventQueued(proxyRoot = " + proxyStrategy.getRootElement() + ", event = " + event + ")" ); //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$ - } } + // If the event queue is empty, directly handle the new event. Otherwise queue it. final ModelProxyEventQueue queue = fProxyEventQueues.get(proxyStrategy); if (queue.fCurrentEvent != null) { assert queue.fCurrentRm != null; @@ -304,6 +302,10 @@ abstract public class AbstractVMProvider implements IVMProvider, IVMEventListene } queue.fCurrentRm.cancel(); } + + if (DEBUG_DELTA && (DEBUG_PRESENTATION_ID == null || getPresentationContext().getId().equals(DEBUG_PRESENTATION_ID))) { + DsfUIPlugin.debug("eventQueued(proxyRoot = " + proxyStrategy.getRootElement() + ", event = " + event + ")" ); //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$ + } queue.fEventQueue.add(new EventInfo(event, crm)); } else { doHandleEvent(queue, proxyStrategy, new EventInfo(event, crm)); @@ -313,7 +315,7 @@ abstract public class AbstractVMProvider implements IVMProvider, IVMEventListene } } - // Clean up model proxies that were removed. + // Discard the event queues of proxies that have been removed List activeProxies = getActiveModelProxies(); for (Iterator itr = fProxyEventQueues.keySet().iterator(); itr.hasNext();) { if (!activeProxies.contains(itr.next())) {