diff options
author | Denis Shienkov <denis.shienkov@gmail.com> | 2015-05-12 17:31:08 +0300 |
---|---|---|
committer | Denis Shienkov <denis.shienkov@gmail.com> | 2015-06-30 11:46:09 +0000 |
commit | 96365c1edc5282b6ec7332f79f2f698ce5f6b6be (patch) | |
tree | bb3327df134aae7e8cf476eaf963532d92d17cf3 /src/serialport/qserialport.cpp | |
parent | bc948f5f695908ad11a19b1336975d07ff1de0e1 (diff) | |
download | qtserialport-96365c1edc5282b6ec7332f79f2f698ce5f6b6be.tar.gz |
Get rid of QSPP::readData()
Because we now (in the Qt 5.5 branch) use QIODevicePrivate's internal read
buffer directly, there is no need to call buffer.read() in QSP::readData().
There is also no point in keeping the platform-specific implementations of
QSPP::readData(), so remove them.
Tested on Windows using the virtual com0com serial ports, and on
Linux usig the virtual tty0tty serial ports.
Change-Id: I136c6d10708cc6fc99a77c351c3945470530845d
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Alex Trotsenko <alex1973tr@gmail.com>
Diffstat (limited to 'src/serialport/qserialport.cpp')
-rw-r--r-- | src/serialport/qserialport.cpp | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/src/serialport/qserialport.cpp b/src/serialport/qserialport.cpp index 9d5aa40..b252152 100644 --- a/src/serialport/qserialport.cpp +++ b/src/serialport/qserialport.cpp @@ -1341,10 +1341,27 @@ bool QSerialPort::isBreakEnabled() const /*! \reimp */ +// This function does not really read anything, as we use QIODevicePrivate's +// buffer. The buffer will be read inside of QIODevice before this +// method will be called. qint64 QSerialPort::readData(char *data, qint64 maxSize) { Q_D(QSerialPort); - return d->readData(data, maxSize); + + Q_UNUSED(data); + Q_UNUSED(maxSize); + +#ifdef Q_OS_WIN32 + // We need try to start async reading to read a remainder from a driver's queue + // in case we have a limited read buffer size. Because the read notification can + // be stalled since Windows do not re-triggered an EV_RXCHAR event if a driver's + // buffer has a remainder of data ready to read until a new data will be received. + if (d->readBufferMaxSize || d->flowControl == QSerialPort::HardwareControl) + d->startAsyncRead(); +#endif + + // return 0 indicating there may be more data in the future + return qint64(0); } /*! |