summaryrefslogtreecommitdiff
path: root/src/serialport/qserialport.cpp
diff options
context:
space:
mode:
authorDenis Shienkov <denis.shienkov@gmail.com>2015-05-12 17:31:08 +0300
committerDenis Shienkov <denis.shienkov@gmail.com>2015-06-30 11:46:09 +0000
commit96365c1edc5282b6ec7332f79f2f698ce5f6b6be (patch)
treebb3327df134aae7e8cf476eaf963532d92d17cf3 /src/serialport/qserialport.cpp
parentbc948f5f695908ad11a19b1336975d07ff1de0e1 (diff)
downloadqtserialport-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.cpp19
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);
}
/*!