1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-06-09 18:56:02 +02:00

[283586] Traditional Rendering are not disposed after Memory Browser is closed or Debug Session is terminated.

This commit is contained in:
Pawel Piech 2010-01-23 00:16:00 +00:00
parent f705bf184e
commit 5862d4025c

View file

@ -41,10 +41,13 @@ import org.eclipse.cdt.dsf.service.DsfServiceEventHandler;
import org.eclipse.cdt.dsf.service.DsfServicesTracker;
import org.eclipse.cdt.dsf.service.DsfSession;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.MultiStatus;
import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.debug.core.DebugEvent;
import org.eclipse.debug.core.DebugException;
import org.eclipse.debug.core.DebugPlugin;
import org.eclipse.debug.core.ILaunchConfiguration;
@ -263,6 +266,19 @@ public class GdbLaunch extends DsfLaunch
// DsfMemoryBlockRetrieval.saveMemoryBlocks();
fMemRetrieval.saveMemoryBlocks();
// Fire a terminate event for the memory retrieval object so
// that the hosting memory views can clean up. See 255120 and
// 283586
new Job("Dispatch GDB Memory retrieval terminate event.") { //$NON-NLS-1$
{ setSystem(true); }
@Override
protected IStatus run(IProgressMonitor monitor) {
DebugPlugin.getDefault().fireDebugEventSet( new DebugEvent[] { new DebugEvent(fMemRetrieval, DebugEvent.TERMINATE) });
return Status.OK_STATUS;
}
}.schedule();
// endSession takes a full dispatch to distribute the
// session-ended event, finish step only after the dispatch.
fExecutor.shutdown();