From 14717d43dea7826d49dc7ec067fcf5def5055178 Mon Sep 17 00:00:00 2001 From: Pawel Piech Date: Mon, 21 Sep 2009 20:36:33 +0000 Subject: [PATCH] Trivial refactoring and comments. --- .../cdt/dsf/ui/viewmodel/AbstractVMProvider.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 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 44f6d9968e7..9ecf5b63361 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 @@ -325,19 +325,25 @@ abstract public class AbstractVMProvider implements IVMProvider, IVMEventListene } private void doHandleEvent(final ModelProxyEventQueue queue, final IVMModelProxy proxyStrategy, final EventInfo eventInfo) { + // Do handle event is a sort of a recursive asynchronous method. It + // calls the asynchronous handleEvent() to process the event from the + // eventInfo argument. When handleEvent() completes, this method + // (doHandleEvent) checks whether there is any more events in the queue + // that should be handled. If there are, doHandleEvent calls itself + // to process the next event in the queue. assert queue.fCurrentEvent == null && queue.fCurrentRm == null; queue.fCurrentEvent = eventInfo; queue.fCurrentRm = new RequestMonitor(getExecutor(), null) { @Override protected void handleCompleted() { + eventInfo.fClientRm.done(); queue.fCurrentEvent = null; queue.fCurrentRm = null; if (!queue.fEventQueue.isEmpty()) { - EventInfo eventInfo = queue.fEventQueue.remove(0); - doHandleEvent(queue, proxyStrategy, eventInfo); + EventInfo nextEventInfo = queue.fEventQueue.remove(0); + doHandleEvent(queue, proxyStrategy, nextEventInfo); } - eventInfo.fClientRm.done(); } }; handleEvent(proxyStrategy, eventInfo.fEvent, queue.fCurrentRm);