mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-08-12 10:45:37 +02:00
Bug 348700 - [terminal] Regression: Terminal is unusable after "Disconnect"
This commit is contained in:
parent
a2f1731086
commit
c730716a07
3 changed files with 18 additions and 21 deletions
|
@ -1,15 +1,15 @@
|
||||||
!*************** PROJECT CONTRIBUTION ********************************************************
|
!*************** PROJECT CONTRIBUTION ********************************************************
|
||||||
!*** Project's plugins, features and fragments
|
!*** Project's plugins, features and fragments
|
||||||
feature@org.eclipse.rse=v201106011538,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/tools,,org.eclipse.tm.rse/features/org.eclipse.rse-feature
|
feature@org.eclipse.rse=v201106081330,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/tools,,org.eclipse.tm.rse/features/org.eclipse.rse-feature
|
||||||
feature@org.eclipse.rse.core=v201106011538,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/tools,,org.eclipse.tm.rse/features/org.eclipse.rse.core-feature
|
feature@org.eclipse.rse.core=v201106011538,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/tools,,org.eclipse.tm.rse/features/org.eclipse.rse.core-feature
|
||||||
feature@org.eclipse.rse.dstore=v201106011538,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/tools,,org.eclipse.tm.rse/features/org.eclipse.rse.dstore-feature
|
feature@org.eclipse.rse.dstore=v201106011538,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/tools,,org.eclipse.tm.rse/features/org.eclipse.rse.dstore-feature
|
||||||
feature@org.eclipse.rse.examples=v201103142315,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/tools,,org.eclipse.tm.rse/examples/org.eclipse.rse.examples-feature
|
feature@org.eclipse.rse.examples=v201103142315,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/tools,,org.eclipse.tm.rse/examples/org.eclipse.rse.examples-feature
|
||||||
feature@org.eclipse.rse.ftp=v201106011538,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/tools,,org.eclipse.tm.rse/features/org.eclipse.rse.ftp-feature
|
feature@org.eclipse.rse.ftp=v201106011538,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/tools,,org.eclipse.tm.rse/features/org.eclipse.rse.ftp-feature
|
||||||
feature@org.eclipse.rse.local=v201103142315,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/tools,,org.eclipse.tm.rse/features/org.eclipse.rse.local-feature
|
feature@org.eclipse.rse.local=v201103142315,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/tools,,org.eclipse.tm.rse/features/org.eclipse.rse.local-feature
|
||||||
feature@org.eclipse.rse.sdk=v201106011538,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/tools,,org.eclipse.tm.rse/features/org.eclipse.rse.sdk-feature
|
feature@org.eclipse.rse.sdk=v201106081330,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/tools,,org.eclipse.tm.rse/features/org.eclipse.rse.sdk-feature
|
||||||
feature@org.eclipse.rse.ssh=v201106011538,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/tools,,org.eclipse.tm.rse/features/org.eclipse.rse.ssh-feature
|
feature@org.eclipse.rse.ssh=v201106011538,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/tools,,org.eclipse.tm.rse/features/org.eclipse.rse.ssh-feature
|
||||||
feature@org.eclipse.rse.telnet=v201106011538,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/tools,,org.eclipse.tm.rse/features/org.eclipse.rse.telnet-feature
|
feature@org.eclipse.rse.telnet=v201106011538,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/tools,,org.eclipse.tm.rse/features/org.eclipse.rse.telnet-feature
|
||||||
feature@org.eclipse.rse.terminals=v201106011538,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/tools,,org.eclipse.tm.rse/features/org.eclipse.rse.terminals-feature
|
feature@org.eclipse.rse.terminals=v201106081330,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/tools,,org.eclipse.tm.rse/features/org.eclipse.rse.terminals-feature
|
||||||
feature@org.eclipse.rse.tests=v201106011538,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/tools,,org.eclipse.tm.rse/tests/org.eclipse.rse.tests-feature
|
feature@org.eclipse.rse.tests=v201106011538,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/tools,,org.eclipse.tm.rse/tests/org.eclipse.rse.tests-feature
|
||||||
feature@org.eclipse.rse.useractions=v201103142315,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/tools,,org.eclipse.tm.rse/features/org.eclipse.rse.useractions-feature
|
feature@org.eclipse.rse.useractions=v201103142315,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/tools,,org.eclipse.tm.rse/features/org.eclipse.rse.useractions-feature
|
||||||
!!feature@org.eclipse.rse.useractions.wrapper=v20080609a,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/tools,,org.eclipse.tm.rse/features/org.eclipse.rse.useractions.wrapper-feature
|
!!feature@org.eclipse.rse.useractions.wrapper=v20080609a,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/tools,,org.eclipse.tm.rse/features/org.eclipse.rse.useractions.wrapper-feature
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
feature@org.eclipse.tm.terminal=v201105231230,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/tools,,org.eclipse.tm.core/terminal/org.eclipse.tm.terminal-feature
|
feature@org.eclipse.tm.terminal=v201106081330,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/tools,,org.eclipse.tm.core/terminal/org.eclipse.tm.terminal-feature
|
||||||
feature@org.eclipse.tm.terminal.local=v201103142315,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/tools,,org.eclipse.tm.core/terminal/org.eclipse.tm.terminal.local-feature
|
feature@org.eclipse.tm.terminal.local=v201103142315,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/tools,,org.eclipse.tm.core/terminal/org.eclipse.tm.terminal.local-feature
|
||||||
feature@org.eclipse.tm.terminal.local.sdk=v201105231230,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/tools,,org.eclipse.tm.core/terminal/org.eclipse.tm.terminal.local.sdk-feature
|
feature@org.eclipse.tm.terminal.local.sdk=v201106081330,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/tools,,org.eclipse.tm.core/terminal/org.eclipse.tm.terminal.local.sdk-feature
|
||||||
feature@org.eclipse.tm.terminal.sdk=v201105231230,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/tools,,org.eclipse.tm.core/terminal/org.eclipse.tm.terminal.sdk-feature
|
feature@org.eclipse.tm.terminal.sdk=v201106081330,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/tools,,org.eclipse.tm.core/terminal/org.eclipse.tm.terminal.sdk-feature
|
||||||
feature@org.eclipse.tm.terminal.serial=v201103142315,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/tools,,org.eclipse.tm.core/terminal/org.eclipse.tm.terminal.serial-feature
|
feature@org.eclipse.tm.terminal.serial=v201103142315,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/tools,,org.eclipse.tm.core/terminal/org.eclipse.tm.terminal.serial-feature
|
||||||
feature@org.eclipse.tm.terminal.ssh=v201103142315,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/tools,,org.eclipse.tm.core/terminal/org.eclipse.tm.terminal.ssh-feature
|
feature@org.eclipse.tm.terminal.ssh=v201103142315,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/tools,,org.eclipse.tm.core/terminal/org.eclipse.tm.terminal.ssh-feature
|
||||||
feature@org.eclipse.tm.terminal.telnet=v201103142315,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/tools,,org.eclipse.tm.core/terminal/org.eclipse.tm.terminal.telnet-feature
|
feature@org.eclipse.tm.terminal.telnet=v201103142315,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/tools,,org.eclipse.tm.core/terminal/org.eclipse.tm.terminal.telnet-feature
|
||||||
feature@org.eclipse.tm.terminal.test=v201103142315,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/tools,,org.eclipse.tm.core/terminal/org.eclipse.tm.terminal.test-feature
|
feature@org.eclipse.tm.terminal.test=v201103142315,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/tools,,org.eclipse.tm.core/terminal/org.eclipse.tm.terminal.test-feature
|
||||||
feature@org.eclipse.tm.terminal.view=v201103142315,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/tools,,org.eclipse.tm.core/terminal/org.eclipse.tm.terminal.view-feature
|
feature@org.eclipse.tm.terminal.view=v201103142315,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/tools,,org.eclipse.tm.core/terminal/org.eclipse.tm.terminal.view-feature
|
||||||
plugin@org.eclipse.tm.terminal=v201105231230,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/tools,,org.eclipse.tm.core/terminal/org.eclipse.tm.terminal
|
plugin@org.eclipse.tm.terminal=v201106081330,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/tools,,org.eclipse.tm.core/terminal/org.eclipse.tm.terminal
|
||||||
plugin@org.eclipse.tm.terminal.local=v201101042155,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/tools,,org.eclipse.tm.core/terminal/org.eclipse.tm.terminal.local
|
plugin@org.eclipse.tm.terminal.local=v201101042155,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/tools,,org.eclipse.tm.core/terminal/org.eclipse.tm.terminal.local
|
||||||
plugin@org.eclipse.tm.terminal.serial=v201101042155,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/tools,,org.eclipse.tm.core/terminal/org.eclipse.tm.terminal.serial
|
plugin@org.eclipse.tm.terminal.serial=v201101042155,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/tools,,org.eclipse.tm.core/terminal/org.eclipse.tm.terminal.serial
|
||||||
plugin@org.eclipse.tm.terminal.ssh=v201101042155,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/tools,,org.eclipse.tm.core/terminal/org.eclipse.tm.terminal.ssh
|
plugin@org.eclipse.tm.terminal.ssh=v201101042155,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/tools,,org.eclipse.tm.core/terminal/org.eclipse.tm.terminal.ssh
|
||||||
|
|
|
@ -28,6 +28,7 @@
|
||||||
* Anton Leherbauer (Wind River) - [335021] Middle mouse button copy/paste does not work with the terminal
|
* Anton Leherbauer (Wind River) - [335021] Middle mouse button copy/paste does not work with the terminal
|
||||||
* Max Stepanov (Appcelerator) - [339768] Fix ANSI code for PgUp / PgDn
|
* Max Stepanov (Appcelerator) - [339768] Fix ANSI code for PgUp / PgDn
|
||||||
* Pawel Piech (Wind River) - [333613] "Job found still running" after shutdown
|
* Pawel Piech (Wind River) - [333613] "Job found still running" after shutdown
|
||||||
|
* Martin Oberhuber (Wind River) - [348700] Terminal unusable after disconnect
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
package org.eclipse.tm.internal.terminal.emulator;
|
package org.eclipse.tm.internal.terminal.emulator;
|
||||||
|
|
||||||
|
@ -347,9 +348,14 @@ public class VT100TerminalControl implements ITerminalControlForText, ITerminalC
|
||||||
public void disconnectTerminal() {
|
public void disconnectTerminal() {
|
||||||
Logger.log("entered."); //$NON-NLS-1$
|
Logger.log("entered."); //$NON-NLS-1$
|
||||||
|
|
||||||
|
//Disconnect the remote side first
|
||||||
|
if (getState()!=TerminalState.CLOSED) {
|
||||||
|
if(getTerminalConnector()!=null) {
|
||||||
|
getTerminalConnector().disconnect();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//Ensure that a new Job can be started; then clean up old Job.
|
//Ensure that a new Job can be started; then clean up old Job.
|
||||||
//TODO not sure whether the fInputStream needs to be cleaned too,
|
|
||||||
//or whether the Job could actually cancel in case the fInputStream is closed.
|
|
||||||
Job job;
|
Job job;
|
||||||
synchronized(this) {
|
synchronized(this) {
|
||||||
job = fJob;
|
job = fJob;
|
||||||
|
@ -358,22 +364,13 @@ public class VT100TerminalControl implements ITerminalControlForText, ITerminalC
|
||||||
if (job!=null) {
|
if (job!=null) {
|
||||||
job.cancel();
|
job.cancel();
|
||||||
// Join job to avoid leaving job running after workbench shutdown (333613).
|
// Join job to avoid leaving job running after workbench shutdown (333613).
|
||||||
|
// Interrupt to be fast enough; cannot close fInputStream since it is re-used (bug 348700).
|
||||||
|
Thread t = job.getThread();
|
||||||
|
if(t!=null) t.interrupt();
|
||||||
try {
|
try {
|
||||||
// The Job will check its cancel status after 500msec latest. But we still
|
|
||||||
// Interrupt the Job, such that it can join fast enough during Workbench shutdown (bug 333613).
|
|
||||||
// TODO closing fInputStream may seem more clean but causes problems (bug 348700).
|
|
||||||
Thread t = job.getThread();
|
|
||||||
if(t!=null) t.interrupt();
|
|
||||||
job.join();
|
job.join();
|
||||||
} catch (InterruptedException e) {}
|
} catch (InterruptedException e) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (getState()==TerminalState.CLOSED) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if(getTerminalConnector()!=null) {
|
|
||||||
getTerminalConnector().disconnect();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO
|
// TODO
|
||||||
|
|
Loading…
Add table
Reference in a new issue