summaryrefslogtreecommitdiff
path: root/src/serialport/qserialport.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/serialport/qserialport.cpp')
-rw-r--r--src/serialport/qserialport.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/serialport/qserialport.cpp b/src/serialport/qserialport.cpp
index 690eb65..369be62 100644
--- a/src/serialport/qserialport.cpp
+++ b/src/serialport/qserialport.cpp
@@ -1409,7 +1409,7 @@ qint64 QSerialPort::readData(char *data, qint64 maxSize)
Q_UNUSED(data);
Q_UNUSED(maxSize);
-#ifdef Q_OS_WIN32
+#if defined(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
@@ -1417,6 +1417,12 @@ qint64 QSerialPort::readData(char *data, qint64 maxSize)
Q_D(QSerialPort);
if (d->readBufferMaxSize || d->flowControl == QSerialPort::HardwareControl)
d->startAsyncRead();
+#elif defined(Q_OS_UNIX)
+ // We need try to re-trigger the read notification to read a remainder from a
+ // driver's queue in case we have a limited read buffer size.
+ Q_D(QSerialPort);
+ if (d->readBufferMaxSize && !d->isReadNotificationEnabled())
+ d->setReadNotificationEnabled(true);
#endif
// return 0 indicating there may be more data in the future