From d9e9c8256b982e62437ae4b9aecb43d97adcb835 Mon Sep 17 00:00:00 2001 From: Pawel Piech Date: Tue, 30 Sep 2008 22:31:24 +0000 Subject: [PATCH] [249239] - [debug view] Started/Exited events should always be handled (should not be skipped for optimization) --- .../ui/viewmodel/launch/AbstractLaunchVMProvider.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/plugins/org.eclipse.dd.dsf.debug.ui/src/org/eclipse/dd/dsf/debug/internal/provisional/ui/viewmodel/launch/AbstractLaunchVMProvider.java b/plugins/org.eclipse.dd.dsf.debug.ui/src/org/eclipse/dd/dsf/debug/internal/provisional/ui/viewmodel/launch/AbstractLaunchVMProvider.java index 91e47fc2efc..8dc0cdb5b72 100644 --- a/plugins/org.eclipse.dd.dsf.debug.ui/src/org/eclipse/dd/dsf/debug/internal/provisional/ui/viewmodel/launch/AbstractLaunchVMProvider.java +++ b/plugins/org.eclipse.dd.dsf.debug.ui/src/org/eclipse/dd/dsf/debug/internal/provisional/ui/viewmodel/launch/AbstractLaunchVMProvider.java @@ -28,6 +28,7 @@ import org.eclipse.dd.dsf.debug.internal.provisional.ui.viewmodel.launch.StackFr import org.eclipse.dd.dsf.debug.internal.ui.DsfDebugUIPlugin; import org.eclipse.dd.dsf.debug.service.IRunControl; import org.eclipse.dd.dsf.debug.service.IRunControl.IExecutionDMContext; +import org.eclipse.dd.dsf.debug.service.IRunControl.IStartedDMEvent; import org.eclipse.dd.dsf.debug.service.IRunControl.ISuspendedDMEvent; import org.eclipse.dd.dsf.debug.ui.IDsfDebugUIConstants; import org.eclipse.dd.dsf.service.DsfSession; @@ -254,6 +255,12 @@ public class AbstractLaunchVMProvider extends AbstractDMVMProvider // before the last suspended events. However, the debug view can get suspended // events for different threads, so make sure to skip only the events if they // were in the same hierarchy as the last suspended event. + // Note: Avoid skipping thread started/exited events which require a larger + // scope refresh than some suspended events. + if (newEvent instanceof IStartedDMEvent || newEvent instanceof IExitedDMEvent) { + return false; + } + if (newEvent instanceof ISuspendedDMEvent && eventToSkip instanceof IDMEvent) { IDMContext newEventDmc = ((IDMEvent)newEvent).getDMContext(); IDMContext eventToSkipDmc = ((IDMEvent)eventToSkip).getDMContext();