summaryrefslogtreecommitdiff
path: root/src/serialport/qserialport_p.h
diff options
context:
space:
mode:
authorAlex Trotsenko <alex1973tr@gmail.com>2017-04-21 20:46:13 +0300
committerAlex Trotsenko <alex1973tr@gmail.com>2017-04-26 11:50:44 +0000
commit84221c27840529bccb3d50c7e2da26b40a310e18 (patch)
tree2e6cae91fbf3d887e2a1af199fe75a70c78f808c /src/serialport/qserialport_p.h
parenta5ecc626bc6cf4e0890150acabcbff3a8d9af871 (diff)
downloadqtserialport-84221c27840529bccb3d50c7e2da26b40a310e18.tar.gz
Improve read performance when the buffer size is limited
Read notifications should be enabled all the time while the device is opened unless the buffer size limit is reached. To enable the read notifier again, the user needs to read the data or enlarge the buffer with a setReadBufferSize() call. According to that scenario, it's very likely that the device will toggle the state of notifier twice (on->off->on) in one notification cycle. This patch prevents this unnecessary toggling by: - unconditionally setting the notifier's state in setReadBufferSize()/ readData(); - deferring the notification disabling in readNotification() on Unix and in completeAsyncRead() on Windows to the next notification cycle. Change-Id: I97fc041bb705c034a7e73d1437e64b9b34dc2c18 Reviewed-by: Denis Shienkov <denis.shienkov@gmail.com>
Diffstat (limited to 'src/serialport/qserialport_p.h')
-rw-r--r--src/serialport/qserialport_p.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/serialport/qserialport_p.h b/src/serialport/qserialport_p.h
index a81cc4b..a742e0f 100644
--- a/src/serialport/qserialport_p.h
+++ b/src/serialport/qserialport_p.h
@@ -175,6 +175,8 @@ public:
bool settingsRestoredOnClose;
bool isBreakEnabled;
+ bool startAsyncRead();
+
#if defined(Q_OS_WIN32)
bool setDcb(DCB *dcb);
@@ -188,7 +190,6 @@ public:
bool completeAsyncWrite(qint64 bytesTransferred);
bool startAsyncCommunication();
- bool startAsyncRead();
bool _q_startAsyncWrite();
void _q_notified(DWORD numberOfBytes, DWORD errorCode, OVERLAPPED *overlapped);