diff options
author | Andreas Buhr <andreas.buhr@qt.io> | 2021-03-22 14:09:20 +0100 |
---|---|---|
committer | Andreas Buhr <andreas.buhr@qt.io> | 2021-03-23 20:21:20 +0100 |
commit | 5466df6f9b9237caba71a3ae323b931de1f7eda9 (patch) | |
tree | 24162fc6b6d8cad095ad346f12a30bd33d4bd828 | |
parent | 1b07519f6ca912c0c6334b96d26c61fd8b216a6e (diff) |
Always call setOpenMode before setSocketState
setSocketState emits signals and should thus be called last.
I most code, setOpenMode is called before setSocketState. But in some
occasions, setSocketState was called before setOpenMode. This patch
introduces a consistent call order: setOpenMode before setSocketState.
Change-Id: I07f33511c76fbd08c79050a3fcbc1e1dd72fff04
Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
(cherry picked from commit 62da7abae76b78fdc9385a0d997f3483057cf37c)
-rw-r--r-- | src/bluetooth/qbluetoothsocket_bluez.cpp | 2 | ||||
-rw-r--r-- | src/bluetooth/qbluetoothsocket_osx.mm | 4 | ||||
-rw-r--r-- | src/bluetooth/qbluetoothsocket_win.cpp | 8 |
3 files changed, 8 insertions, 6 deletions
diff --git a/src/bluetooth/qbluetoothsocket_bluez.cpp b/src/bluetooth/qbluetoothsocket_bluez.cpp index f81580a6..2a0d77f2 100644 --- a/src/bluetooth/qbluetoothsocket_bluez.cpp +++ b/src/bluetooth/qbluetoothsocket_bluez.cpp @@ -689,8 +689,8 @@ bool QBluetoothSocketPrivateBluez::setSocketDescriptor(int socketDescriptor, QBl connectWriteNotifier = new QSocketNotifier(socket, QSocketNotifier::Write, q); QObject::connect(connectWriteNotifier, SIGNAL(activated(QSocketDescriptor)), this, SLOT(_q_writeNotify())); - q->setSocketState(socketState); q->setOpenMode(openMode); + q->setSocketState(socketState); return true; } diff --git a/src/bluetooth/qbluetoothsocket_osx.mm b/src/bluetooth/qbluetoothsocket_osx.mm index 7259aeb5..60825048 100644 --- a/src/bluetooth/qbluetoothsocket_osx.mm +++ b/src/bluetooth/qbluetoothsocket_osx.mm @@ -519,8 +519,8 @@ void QBluetoothSocketPrivate::channelOpenComplete() Q_ASSERT_X(q_ptr, Q_FUNC_INFO, "invalid q_ptr (null)"); if (!isConnecting) { - q_ptr->setSocketState(QBluetoothSocket::ConnectedState); q_ptr->setOpenMode(openMode); + q_ptr->setSocketState(QBluetoothSocket::ConnectedState); emit q_ptr->connected(); } else { state = QBluetoothSocket::ConnectedState; @@ -537,8 +537,8 @@ void QBluetoothSocketPrivate::channelClosed() // (thus close/abort probably will not work). if (!isConnecting) { - q_ptr->setSocketState(QBluetoothSocket::UnconnectedState); q_ptr->setOpenMode(QIODevice::NotOpen); + q_ptr->setSocketState(QBluetoothSocket::UnconnectedState); emit q_ptr->readChannelFinished(); } else { state = QBluetoothSocket::UnconnectedState; diff --git a/src/bluetooth/qbluetoothsocket_win.cpp b/src/bluetooth/qbluetoothsocket_win.cpp index 713fcbf8..12ad8094 100644 --- a/src/bluetooth/qbluetoothsocket_win.cpp +++ b/src/bluetooth/qbluetoothsocket_win.cpp @@ -133,8 +133,8 @@ void QBluetoothSocketPrivateWin::connectToServiceHelper(const QBluetoothAddress const int error = ::WSAGetLastError(); if (result != SOCKET_ERROR || error == WSAEWOULDBLOCK) { - q->setSocketState(QBluetoothSocket::ConnectingState); q->setOpenMode(openMode); + q->setSocketState(QBluetoothSocket::ConnectingState); } else { errorString = qt_error_string(error); q->setSocketError(QBluetoothSocket::UnknownSocketError); @@ -341,10 +341,12 @@ void QBluetoothSocketPrivateWin::abort() Q_Q(QBluetoothSocket); const bool wasConnected = q->state() == QBluetoothSocket::ConnectedState; - q->setSocketState(QBluetoothSocket::UnconnectedState); if (wasConnected) { q->setOpenMode(QIODevice::NotOpen); + q->setSocketState(QBluetoothSocket::UnconnectedState); emit q->readChannelFinished(); + } else { + q->setSocketState(QBluetoothSocket::UnconnectedState); } } @@ -509,8 +511,8 @@ bool QBluetoothSocketPrivateWin::setSocketDescriptor(int socketDescriptor, if (!createNotifiers()) return false; - q->setSocketState(socketState); q->setOpenMode(openMode); + q->setSocketState(socketState); if (socketState == QBluetoothSocket::ConnectedState) { connectWriteNotifier->setEnabled(true); readNotifier->setEnabled(true); |