summaryrefslogtreecommitdiff
path: root/src/serialport/qserialport_win.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/serialport/qserialport_win.cpp')
-rw-r--r--src/serialport/qserialport_win.cpp19
1 files changed, 10 insertions, 9 deletions
diff --git a/src/serialport/qserialport_win.cpp b/src/serialport/qserialport_win.cpp
index ecbf464..18cef1e 100644
--- a/src/serialport/qserialport_win.cpp
+++ b/src/serialport/qserialport_win.cpp
@@ -259,7 +259,7 @@ bool QSerialPortPrivate::setRequestToSend(bool set)
bool QSerialPortPrivate::flush()
{
- return startAsyncWrite();
+ return _q_startAsyncWrite();
}
bool QSerialPortPrivate::clear(QSerialPort::Directions directions)
@@ -313,7 +313,7 @@ void QSerialPortPrivate::startWriting()
if (!writeStarted) {
if (!startAsyncWriteTimer) {
startAsyncWriteTimer = new QTimer(q);
- q->connect(startAsyncWriteTimer, SIGNAL(timeout()), q, SLOT(_q_completeAsyncWrite()));
+ q->connect(startAsyncWriteTimer, SIGNAL(timeout()), q, SLOT(_q_startAsyncWrite()));
startAsyncWriteTimer->setSingleShot(true);
}
startAsyncWriteTimer->start(0);
@@ -327,7 +327,7 @@ bool QSerialPortPrivate::waitForReadyRead(int msecs)
QElapsedTimer stopWatch;
stopWatch.start();
- if (!writeStarted && !startAsyncWrite())
+ if (!writeStarted && !_q_startAsyncWrite())
return false;
const qint64 initialReadBufferSize = readBuffer.size();
@@ -381,7 +381,7 @@ bool QSerialPortPrivate::waitForBytesWritten(int msecs)
QElapsedTimer stopWatch;
stopWatch.start();
- if (!writeStarted && !startAsyncWrite())
+ if (!writeStarted && !_q_startAsyncWrite())
return false;
forever {
@@ -543,17 +543,18 @@ bool QSerialPortPrivate::_q_completeAsyncWrite()
Q_Q(QSerialPort);
if (writeStarted) {
- writeStarted = false;
const qint64 bytesTransferred = handleOverlappedResult(QSerialPort::Output, writeCompletionOverlapped);
- if (bytesTransferred == qint64(-1))
+ if (bytesTransferred == qint64(-1)) {
+ writeStarted = false;
return false;
- if (bytesTransferred > 0) {
+ } else if (bytesTransferred > 0) {
writeBuffer.free(bytesTransferred);
emit q->bytesWritten(bytesTransferred);
}
+ writeStarted = false;
}
- return startAsyncWrite();
+ return _q_startAsyncWrite();
}
bool QSerialPortPrivate::startAsyncCommunication()
@@ -605,7 +606,7 @@ bool QSerialPortPrivate::startAsyncRead()
return true;
}
-bool QSerialPortPrivate::startAsyncWrite()
+bool QSerialPortPrivate::_q_startAsyncWrite()
{
Q_Q(QSerialPort);