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 18a6649a25c..1dd92ca3cad 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 @@ -254,6 +254,17 @@ abstract public class AbstractVMProvider implements IVMProvider, IVMEventListene crm.setDoneCount(activeModelProxies.size()); for (final IVMModelProxy proxyStrategy : activeModelProxies) { + // If the event is generated by the model proxy, only process it for the proxy that created it. + if ( event instanceof ModelProxyInstalledEvent && + !((ModelProxyInstalledEvent)event).getModelProxy().equals(proxyStrategy) ) + { + crm.done(); + continue; + } + + // Process the event only if there are potential delta flags that may be generated. + // Also, process the event if it is a result of the user modifying something + // so that the cache is properly updated. if (proxyStrategy.isDeltaEvent(event) || event instanceof UserEditEvent) { if (DEBUG_DELTA && (DEBUG_PRESENTATION_ID == null || getPresentationContext().getId().equals(DEBUG_PRESENTATION_ID))) { DsfUIPlugin.debug("eventReceived(proxyRoot = " + proxyStrategy .getRootElement() + ", event = " + event + ")" ); //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$