From 1b07519f6ca912c0c6334b96d26c61fd8b216a6e Mon Sep 17 00:00:00 2001 From: Andreas Buhr Date: Tue, 16 Mar 2021 17:42:43 +0100 Subject: Fix bug: Let QBluetoothsocket::close emit disconnected only once QBluetoothSocket::close emitted "disconnected" twice on macOS. The first emit is by setSocketState(UnconnectedState). This patch fixes the behavior to only emit it once. Fixes: QTBUG-91164 Change-Id: I7147a28b40c49db947ee97a4f1a14f319da341d1 Reviewed-by: Qt CI Bot Reviewed-by: Oliver Wolff (cherry picked from commit 2a6ab855c2a4ffc5253126d53bc667b0076dd9c9) Reviewed-by: Andreas Buhr Reviewed-by: Alex Blasche --- src/bluetooth/qbluetoothsocket_osx.mm | 1 - 1 file changed, 1 deletion(-) (limited to 'src/bluetooth/qbluetoothsocket_osx.mm') diff --git a/src/bluetooth/qbluetoothsocket_osx.mm b/src/bluetooth/qbluetoothsocket_osx.mm index 70ed87ca..7259aeb5 100644 --- a/src/bluetooth/qbluetoothsocket_osx.mm +++ b/src/bluetooth/qbluetoothsocket_osx.mm @@ -540,7 +540,6 @@ void QBluetoothSocketPrivate::channelClosed() q_ptr->setSocketState(QBluetoothSocket::UnconnectedState); q_ptr->setOpenMode(QIODevice::NotOpen); emit q_ptr->readChannelFinished(); - emit q_ptr->disconnected(); } else { state = QBluetoothSocket::UnconnectedState; // We are still in connectToService and do not want -- cgit v1.2.3 From 5466df6f9b9237caba71a3ae323b931de1f7eda9 Mon Sep 17 00:00:00 2001 From: Andreas Buhr Date: Mon, 22 Mar 2021 14:09:20 +0100 Subject: 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 (cherry picked from commit 62da7abae76b78fdc9385a0d997f3483057cf37c) --- src/bluetooth/qbluetoothsocket_osx.mm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/bluetooth/qbluetoothsocket_osx.mm') 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; -- cgit v1.2.3