diff options
author | Alvaro Sanchez-Leon | 2017-01-10 11:59:19 +0000 |
---|---|---|
committer | Marc Khouzam | 2017-01-17 16:49:15 +0000 |
commit | 028eb67a17b5546681eb7785a6c7febca776d46c (patch) | |
tree | c62ab3cafe4eb7282bd54706fd28ebcac4c6fee0 /dsf-gdb/org.eclipse.cdt.dsf.gdb.ui | |
parent | 6cad124cf0c38f1eca85ae9e08929d1eefcb63ad (diff) | |
download | org.eclipse.cdt-028eb67a17b5546681eb7785a6c7febca776d46c.tar.gz org.eclipse.cdt-028eb67a17b5546681eb7785a6c7febca776d46c.tar.xz org.eclipse.cdt-028eb67a17b5546681eb7785a6c7febca776d46c.zip |
Bug 509895 - GdbBasicCliConsole left running after platform shutdown
when launch fails
Change-Id: I5879f5ed770e63c11077e091f18c5766b243bd88
Diffstat (limited to 'dsf-gdb/org.eclipse.cdt.dsf.gdb.ui')
2 files changed, 28 insertions, 5 deletions
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) { |