mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-06-09 10:46:02 +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:
parent
bf10b89b78
commit
a348175717
3 changed files with 21 additions and 11 deletions
|
@ -13,6 +13,7 @@
|
||||||
* Contributors:
|
* Contributors:
|
||||||
* Michael Scharf (Wind River) - extracted from TerminalControl
|
* Michael Scharf (Wind River) - extracted from TerminalControl
|
||||||
* Martin Oberhuber (Wind River) - fixed copyright headers and beautified
|
* 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;
|
package org.eclipse.tm.internal.terminal.serial;
|
||||||
|
|
||||||
|
@ -41,6 +42,7 @@ public class SerialConnector implements ITerminalConnector {
|
||||||
private CommPortIdentifier fSerialPortIdentifier;
|
private CommPortIdentifier fSerialPortIdentifier;
|
||||||
private SerialPortHandler fTerminalSerialPortHandler;
|
private SerialPortHandler fTerminalSerialPortHandler;
|
||||||
private SerialSettings fSettings;
|
private SerialSettings fSettings;
|
||||||
|
private SerialConnectWorker fConnectWorker;
|
||||||
public SerialConnector() {
|
public SerialConnector() {
|
||||||
}
|
}
|
||||||
public SerialConnector(SerialSettings settings) {
|
public SerialConnector(SerialSettings settings) {
|
||||||
|
@ -56,9 +58,13 @@ public class SerialConnector implements ITerminalConnector {
|
||||||
}
|
}
|
||||||
public void connect(ITerminalControl control) {
|
public void connect(ITerminalControl control) {
|
||||||
Logger.log("entered."); //$NON-NLS-1$
|
Logger.log("entered."); //$NON-NLS-1$
|
||||||
|
if (fConnectWorker!=null && fConnectWorker.isAlive()) {
|
||||||
|
//already connecting
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
fConnectWorker = new SerialConnectWorker(this, control);
|
||||||
fControl=control;
|
fControl=control;
|
||||||
SerialConnectWorker worker = new SerialConnectWorker(this, control);
|
fConnectWorker.start();
|
||||||
worker.start();
|
|
||||||
}
|
}
|
||||||
public void disconnect() {
|
public void disconnect() {
|
||||||
Logger.log("entered."); //$NON-NLS-1$
|
Logger.log("entered."); //$NON-NLS-1$
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
* Contributors:
|
* Contributors:
|
||||||
* Michael Scharf (Wind River) - split into core, view and connector plugins
|
* Michael Scharf (Wind River) - split into core, view and connector plugins
|
||||||
* Martin Oberhuber (Wind River) - fixed copyright headers and beautified
|
* 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;
|
package org.eclipse.tm.internal.terminal.view;
|
||||||
|
|
||||||
|
@ -212,7 +213,8 @@ public class TerminalView extends ViewPart implements ITerminalView, ITerminalLi
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onTerminalConnect() {
|
public void onTerminalConnect() {
|
||||||
if (isConnected())
|
//if (isConnected())
|
||||||
|
if (fCtlTerminal.getState()!=TerminalState.CLOSED)
|
||||||
return;
|
return;
|
||||||
if(fCtlTerminal.getTerminalConnectorInfo()==null)
|
if(fCtlTerminal.getTerminalConnectorInfo()==null)
|
||||||
setConnector(showSettingsDialog());
|
setConnector(showSettingsDialog());
|
||||||
|
@ -226,13 +228,15 @@ public class TerminalView extends ViewPart implements ITerminalView, ITerminalLi
|
||||||
}
|
}
|
||||||
|
|
||||||
public void updateTerminalConnect() {
|
public void updateTerminalConnect() {
|
||||||
boolean bEnabled = ((!isConnecting()) && (!fCtlTerminal.isConnected()));
|
//boolean bEnabled = ((!isConnecting()) && (!fCtlTerminal.isConnected()));
|
||||||
|
boolean bEnabled = (fCtlTerminal.getState()==TerminalState.CLOSED);
|
||||||
|
|
||||||
fActionTerminalConnect.setEnabled(bEnabled);
|
fActionTerminalConnect.setEnabled(bEnabled);
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isConnecting() {
|
private boolean isConnecting() {
|
||||||
return fCtlTerminal.getState()==TerminalState.CONNECTING;
|
return fCtlTerminal.getState()==TerminalState.CONNECTING
|
||||||
|
|| fCtlTerminal.getState()==TerminalState.OPENED;
|
||||||
}
|
}
|
||||||
private boolean isConnected() {
|
private boolean isConnected() {
|
||||||
return fCtlTerminal.getState()==TerminalState.CONNECTED;
|
return fCtlTerminal.getState()==TerminalState.CONNECTED;
|
||||||
|
@ -282,10 +286,8 @@ public class TerminalView extends ViewPart implements ITerminalView, ITerminalLi
|
||||||
}
|
}
|
||||||
|
|
||||||
public void updateTerminalSettings() {
|
public void updateTerminalSettings() {
|
||||||
boolean bEnabled;
|
//boolean bEnabled = ((!isConnecting()) && (!fCtlTerminal.isConnected()));
|
||||||
|
boolean bEnabled = (fCtlTerminal.getState()==TerminalState.CLOSED);
|
||||||
bEnabled = ((!isConnecting()) && (!fCtlTerminal
|
|
||||||
.isConnected()));
|
|
||||||
|
|
||||||
fActionTerminalSettings.setEnabled(bEnabled);
|
fActionTerminalSettings.setEnabled(bEnabled);
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
* Contributors:
|
* Contributors:
|
||||||
* Michael Scharf (Wind River) - split into core, view and connector plugins
|
* Michael Scharf (Wind River) - split into core, view and connector plugins
|
||||||
* Martin Oberhuber (Wind River) - fixed copyright headers and beautified
|
* 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;
|
package org.eclipse.tm.internal.terminal.emulator;
|
||||||
|
|
||||||
|
@ -655,7 +656,8 @@ public class VT100TerminalControl implements ITerminalControlForText, ITerminalC
|
||||||
|
|
||||||
char character = event.character;
|
char character = event.character;
|
||||||
|
|
||||||
if (!isConnected()) {
|
//if (!isConnected()) {
|
||||||
|
if (fState!=TerminalState.CLOSED) {
|
||||||
// Pressing ENTER while not connected causes us to connect.
|
// Pressing ENTER while not connected causes us to connect.
|
||||||
if (character == '\r') {
|
if (character == '\r') {
|
||||||
connectTerminal();
|
connectTerminal();
|
||||||
|
|
Loading…
Add table
Reference in a new issue