diff options
author | Liang Qi <liang.qi@qt.io> | 2017-01-25 10:26:13 +0100 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2017-01-25 10:26:13 +0100 |
commit | 4458f9376aa88b556e38d81180c5966889009bfb (patch) | |
tree | 44b5b9921eb4f9cf5030317685544c4d20820935 /src/serialport/qserialport_win.cpp | |
parent | 23902340662f1ef6f5dafe68a34b593aed6ea497 (diff) | |
parent | f640521532087dc76d36b25a6c49b2f64afcd4de (diff) |
Merge remote-tracking branch 'origin/5.8' into devv5.9.0-alpha1
Conflicts:
.qmake.conf
Change-Id: Ie713faf0d6395f11477fceb35c93388756e33fae
Diffstat (limited to 'src/serialport/qserialport_win.cpp')
-rw-r--r-- | src/serialport/qserialport_win.cpp | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/serialport/qserialport_win.cpp b/src/serialport/qserialport_win.cpp index 9ab44487..84bf5b90 100644 --- a/src/serialport/qserialport_win.cpp +++ b/src/serialport/qserialport_win.cpp @@ -90,6 +90,9 @@ static inline void qt_set_common_props(DCB *dcb) if (dcb->fDtrControl == DTR_CONTROL_HANDSHAKE) dcb->fDtrControl = DTR_CONTROL_DISABLE; + + if (dcb->fRtsControl != RTS_CONTROL_HANDSHAKE) + dcb->fRtsControl = RTS_CONTROL_DISABLE; } static inline void qt_set_baudrate(DCB *dcb, qint32 baudrate) @@ -152,7 +155,8 @@ static inline void qt_set_flowcontrol(DCB *dcb, QSerialPort::FlowControl flowcon dcb->fInX = FALSE; dcb->fOutX = FALSE; dcb->fOutxCtsFlow = FALSE; - dcb->fRtsControl = RTS_CONTROL_DISABLE; + if (dcb->fRtsControl == RTS_CONTROL_HANDSHAKE) + dcb->fRtsControl = RTS_CONTROL_DISABLE; switch (flowcontrol) { case QSerialPort::NoFlowControl: break; @@ -278,7 +282,12 @@ bool QSerialPortPrivate::setRequestToSend(bool set) return false; } - return true; + DCB dcb; + if (!getDcb(&dcb)) + return false; + + dcb.fRtsControl = set ? RTS_CONTROL_ENABLE : RTS_CONTROL_DISABLE; + return setDcb(&dcb); } bool QSerialPortPrivate::flush() |