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

bug 206892: [terminal][serial] Incorrect connected state when COM port is owned by another terminal

https://bugs.eclipse.org/bugs/show_bug.cgi?id=206892
applied patch provided by Martin Oberhuber
This commit is contained in:
Michael Scharf 2007-10-22 04:57:11 +00:00
parent bf10b89b78
commit a348175717
3 changed files with 21 additions and 11 deletions

View file

@ -13,6 +13,7 @@
* Contributors:
* Michael Scharf (Wind River) - extracted from TerminalControl
* Martin Oberhuber (Wind River) - fixed copyright headers and beautified
* Martin Oberhuber (Wind River) - [206892] Dont connect if already connecting
*******************************************************************************/
package org.eclipse.tm.internal.terminal.serial;
@ -41,6 +42,7 @@ public class SerialConnector implements ITerminalConnector {
private CommPortIdentifier fSerialPortIdentifier;
private SerialPortHandler fTerminalSerialPortHandler;
private SerialSettings fSettings;
private SerialConnectWorker fConnectWorker;
public SerialConnector() {
}
public SerialConnector(SerialSettings settings) {
@ -56,9 +58,13 @@ public class SerialConnector implements ITerminalConnector {
}
public void connect(ITerminalControl control) {
Logger.log("entered."); //$NON-NLS-1$
if (fConnectWorker!=null && fConnectWorker.isAlive()) {
//already connecting
return;
}
fConnectWorker = new SerialConnectWorker(this, control);
fControl=control;
SerialConnectWorker worker = new SerialConnectWorker(this, control);
worker.start();
fConnectWorker.start();
}
public void disconnect() {
Logger.log("entered."); //$NON-NLS-1$

View file

@ -13,6 +13,7 @@
* Contributors:
* Michael Scharf (Wind River) - split into core, view and connector plugins
* Martin Oberhuber (Wind River) - fixed copyright headers and beautified
* Martin Oberhuber (Wind River) - [206892] State handling: Only allow connect when CLOSED
*******************************************************************************/
package org.eclipse.tm.internal.terminal.view;
@ -212,7 +213,8 @@ public class TerminalView extends ViewPart implements ITerminalView, ITerminalLi
}
public void onTerminalConnect() {
if (isConnected())
//if (isConnected())
if (fCtlTerminal.getState()!=TerminalState.CLOSED)
return;
if(fCtlTerminal.getTerminalConnectorInfo()==null)
setConnector(showSettingsDialog());
@ -226,13 +228,15 @@ public class TerminalView extends ViewPart implements ITerminalView, ITerminalLi
}
public void updateTerminalConnect() {
boolean bEnabled = ((!isConnecting()) && (!fCtlTerminal.isConnected()));
//boolean bEnabled = ((!isConnecting()) && (!fCtlTerminal.isConnected()));
boolean bEnabled = (fCtlTerminal.getState()==TerminalState.CLOSED);
fActionTerminalConnect.setEnabled(bEnabled);
}
private boolean isConnecting() {
return fCtlTerminal.getState()==TerminalState.CONNECTING;
return fCtlTerminal.getState()==TerminalState.CONNECTING
|| fCtlTerminal.getState()==TerminalState.OPENED;
}
private boolean isConnected() {
return fCtlTerminal.getState()==TerminalState.CONNECTED;
@ -282,10 +286,8 @@ public class TerminalView extends ViewPart implements ITerminalView, ITerminalLi
}
public void updateTerminalSettings() {
boolean bEnabled;
bEnabled = ((!isConnecting()) && (!fCtlTerminal
.isConnected()));
//boolean bEnabled = ((!isConnecting()) && (!fCtlTerminal.isConnected()));
boolean bEnabled = (fCtlTerminal.getState()==TerminalState.CLOSED);
fActionTerminalSettings.setEnabled(bEnabled);
}

View file

@ -13,6 +13,7 @@
* Contributors:
* Michael Scharf (Wind River) - split into core, view and connector plugins
* Martin Oberhuber (Wind River) - fixed copyright headers and beautified
* Martin Oberhuber (Wind River) - [206892] State handling: Only allow connect when CLOSED
*******************************************************************************/
package org.eclipse.tm.internal.terminal.emulator;
@ -287,7 +288,7 @@ public class VT100TerminalControl implements ITerminalControlForText, ITerminalC
if(getTerminalConnector()!=null) {
getTerminalConnector().disconnect();
}
}
}
// TODO
private void waitForConnect() {
@ -655,7 +656,8 @@ public class VT100TerminalControl implements ITerminalControlForText, ITerminalC
char character = event.character;
if (!isConnected()) {
//if (!isConnected()) {
if (fState!=TerminalState.CLOSED) {
// Pressing ENTER while not connected causes us to connect.
if (character == '\r') {
connectTerminal();