summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenis Shienkov <denis.shienkov@gmail.com>2013-03-17 20:47:18 +0400
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-03-17 21:05:13 +0100
commitbdf92a7ed066db6782277b243ffe29f3cc4a0847 (patch)
treef9850b87028f5ff177136251d2b7d4431b5e440e
parent169b901f6af118f9eccacc2d8ab4d6d8c8c0d8d1 (diff)
downloadqtserialport-bdf92a7ed066db6782277b243ffe29f3cc4a0847.tar.gz
Win32: Fix read sequence with considering the type of policy
Method startAsyncRead() should only be called in case of a policy type IgnorePolicy installed. In other types of policies should be re-trigger startWaitCommEvent() method for correctly catch frame/parity errors for each char readed. Change-Id: I94e002d0634fc6cc9763ac492972735393bbf3a2 Reviewed-by: Sergey Belyashov <Sergey.Belyashov@gmail.com> Reviewed-by: Laszlo Papp <lpapp@kde.org>
-rw-r--r--src/serialport/qserialport_win.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/serialport/qserialport_win.cpp b/src/serialport/qserialport_win.cpp
index 3a42816..5747b26 100644
--- a/src/serialport/qserialport_win.cpp
+++ b/src/serialport/qserialport_win.cpp
@@ -178,7 +178,7 @@ public:
bool ret = dptr->completeAsyncRead(numberOfBytesTransferred);
// start async read for possible remainder into driver queue
- if (ret && numberOfBytesTransferred > 0) {
+ if (ret && (numberOfBytesTransferred > 0) && (dptr->policy == QSerialPort::IgnorePolicy)) {
dptr->startAsyncRead();
} else { // driver queue is emplty, so startup wait comm event
CommOverlappedEventNotifier *n =