diff options
author | Alex Trotsenko <alex1973tr@gmail.com> | 2017-04-21 20:46:13 +0300 |
---|---|---|
committer | Alex Trotsenko <alex1973tr@gmail.com> | 2017-04-26 11:50:44 +0000 |
commit | 84221c27840529bccb3d50c7e2da26b40a310e18 (patch) | |
tree | 2e6cae91fbf3d887e2a1af199fe75a70c78f808c /src/serialport/qserialport_p.h | |
parent | a5ecc626bc6cf4e0890150acabcbff3a8d9af871 (diff) | |
download | qtserialport-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.h | 3 |
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); |