diff --git a/debug/org.eclipse.cdt.debug.ui/META-INF/MANIFEST.MF b/debug/org.eclipse.cdt.debug.ui/META-INF/MANIFEST.MF index b30629b0c42..a7ded1aa541 100644 --- a/debug/org.eclipse.cdt.debug.ui/META-INF/MANIFEST.MF +++ b/debug/org.eclipse.cdt.debug.ui/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %pluginName Bundle-SymbolicName: org.eclipse.cdt.debug.ui; singleton:=true -Bundle-Version: 8.1.0.qualifier +Bundle-Version: 8.2.0.qualifier Bundle-Activator: org.eclipse.cdt.debug.ui.CDebugUIPlugin Bundle-Vendor: %providerName Bundle-Localization: plugin diff --git a/debug/org.eclipse.cdt.debug.ui/pom.xml b/debug/org.eclipse.cdt.debug.ui/pom.xml index 03950716438..1a53822c7bc 100644 --- a/debug/org.eclipse.cdt.debug.ui/pom.xml +++ b/debug/org.eclipse.cdt.debug.ui/pom.xml @@ -11,7 +11,7 @@ ../../pom.xml - 8.1.0-SNAPSHOT + 8.2.0-SNAPSHOT org.eclipse.cdt.debug.ui eclipse-plugin diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/debuggerconsole/IDebuggerConsole.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/debuggerconsole/IDebuggerConsole.java index 9716d28d1aa..56c5ac79739 100644 --- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/debuggerconsole/IDebuggerConsole.java +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/debuggerconsole/IDebuggerConsole.java @@ -41,4 +41,13 @@ public interface IDebuggerConsole extends IConsole { * notification to e.g. keep other views in sync with the context of the console */ void consoleSelected(); + + /** + * Stop processing but don't dispose this console yet, + * i.e. It's desirable to keep the last I/O information available to the user + * @since 8.2 + */ + default void stop() { + // Nothing to do by default + } } diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/console/GdbBasicCliConsole.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/console/GdbBasicCliConsole.java index 105e16fc195..86e5418091d 100644 --- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/console/GdbBasicCliConsole.java +++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/console/GdbBasicCliConsole.java @@ -27,6 +27,7 @@ import org.eclipse.swt.widgets.Display; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.console.IConsoleView; import org.eclipse.ui.console.IOConsole; +import org.eclipse.ui.console.IOConsoleInputStream; import org.eclipse.ui.console.IOConsoleOutputStream; import org.eclipse.ui.part.IPageBookViewPage; @@ -93,7 +94,14 @@ public class GdbBasicCliConsole extends IOConsole implements IGDBDebuggerConsole @Override protected void dispose() { - try { + stop(); + super.dispose(); + } + + @Override + public void stop() { + // Closing the streams will trigger the termination of the associated reading jobs + try { fOutputStream.close(); } catch (IOException e) { } @@ -102,11 +110,17 @@ public class GdbBasicCliConsole extends IOConsole implements IGDBDebuggerConsole } catch (IOException e) { } - GdbUIPlugin.getDefault().getPreferenceStore().removePropertyChangeListener(fPreferenceListener); + IOConsoleInputStream istream = getInputStream(); + if (istream != null) { + try { + istream.close(); + } catch (IOException e) { + } + } - super.dispose(); + GdbUIPlugin.getDefault().getPreferenceStore().removePropertyChangeListener(fPreferenceListener); } - + private void setDefaults() { IPreferenceStore store = GdbUIPlugin.getDefault().getPreferenceStore(); boolean enabled = store.getBoolean(IGdbDebugPreferenceConstants.PREF_CONSOLE_INVERTED_COLORS); diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/console/GdbCliConsoleManager.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/console/GdbCliConsoleManager.java index d4874699941..ae0604cdbb0 100644 --- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/console/GdbCliConsoleManager.java +++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/console/GdbCliConsoleManager.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2016 Ericsson and others. + * Copyright (c) 2016, 2017 Ericsson and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -78,6 +78,7 @@ public class GdbCliConsoleManager implements ILaunchesListener2 { public void launchesTerminated(ILaunch[] launches) { for (ILaunch launch : launches) { renameConsole(launch); + stopConsole(launch); } } @@ -95,6 +96,14 @@ public class GdbCliConsoleManager implements ILaunchesListener2 { } } + protected void stopConsole(ILaunch launch) { + IDebuggerConsole console = getConsole(launch); + + if (console != null) { + console.stop(); + } + } + private void renameConsole(ILaunch launch) { IDebuggerConsole console = getConsole(launch); if (console != null) {