diff options
author | Denis Shienkov <denis.shienkov@gmail.com> | 2014-12-04 13:22:47 +0300 |
---|---|---|
committer | Denis Shienkov <denis.shienkov@gmail.com> | 2014-12-04 13:45:54 +0100 |
commit | e0d91fb76477d21f9152c16044f0492c4cac9998 (patch) | |
tree | a12616be09acf699fdaa6c285f2e2ca408f204f1 | |
parent | 5d58e6950f63e000d31124b567f2f8351c8820f6 (diff) | |
download | qtserialport-e0d91fb76477d21f9152c16044f0492c4cac9998.tar.gz |
Mark a device as open only after all settings was aplied
Otherwise it lead to emmiting of the QSP::NotOpenError in case we close
a device from a slot, which is connected to QSP::SerialPortError signal.
In this case QSP::close() called twice: from the slot, and from the
QSP::open() method (this behavior can be reproduced with Terminal
example).
So, inside of QSP::open() we need to move QIODevice::open() down, and
instead of QSP::close() to use QSPP::close().
Tested on Linux with USB PL2303 with trying to setup an unsupported
baud rate as 14400 baud.
Change-Id: I12dec085423dd9f5a08b7884f32dd2ba8aa8c951
Reviewed-by: Sergey Belyashov <Sergey.Belyashov@gmail.com>
-rw-r--r-- | src/serialport/qserialport.cpp | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/serialport/qserialport.cpp b/src/serialport/qserialport.cpp index 2bd7c69..5e838c0 100644 --- a/src/serialport/qserialport.cpp +++ b/src/serialport/qserialport.cpp @@ -521,17 +521,17 @@ bool QSerialPort::open(OpenMode mode) if (!d->open(mode)) return false; - QIODevice::open(mode); - if (!d->setBaudRate() || !d->setDataBits(d->dataBits) || !d->setParity(d->parity) || !d->setStopBits(d->stopBits) || !d->setFlowControl(d->flowControl)) { - close(); + d->close(); return false; } + QIODevice::open(mode); + d->dataTerminalReady = isDataTerminalReady(); d->requestToSend = isRequestToSend(); |