diff options
author | Oleg Shparber <trollixx@gmail.com> | 2014-04-14 11:03:42 -0700 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-04-15 17:31:38 +0200 |
commit | 99a53598a952f775f8ce8a3b1bf66cf81cb63761 (patch) | |
tree | a43db1127a0228a8933c62a1e94e9623daf600a4 | |
parent | 5f00449d4b1492142ba23211258e2370bdfa5986 (diff) |
Refactor disconnection signals emittance in QBluetoothSocket
This fixes duplicate switching to the unconnected state in case
the disconnect() signal is used to reconnect.
[ChangeLog][QtBluetooth][QBluetoothSocket] Fixed duplicate emission
of unconnected state in the reconnection case.
Change-Id: If449420d936c96e62518fc408e6a1e35b79988a8
Reviewed-by: Alex Blasche <alexander.blasche@digia.com>
-rw-r--r-- | src/bluetooth/qbluetoothsocket.cpp | 9 | ||||
-rw-r--r-- | src/bluetooth/qbluetoothsocket_bluez.cpp | 16 | ||||
-rw-r--r-- | src/bluetooth/qbluetoothsocket_qnx.cpp | 2 |
3 files changed, 10 insertions, 17 deletions
diff --git a/src/bluetooth/qbluetoothsocket.cpp b/src/bluetooth/qbluetoothsocket.cpp index 6272ca1f..0c514887 100644 --- a/src/bluetooth/qbluetoothsocket.cpp +++ b/src/bluetooth/qbluetoothsocket.cpp @@ -600,7 +600,12 @@ void QBluetoothSocket::abort() Q_D(QBluetoothSocket); d->abort(); + +#ifndef QT_ANDROID_BLUETOOTH + //Android closes when the Java event loop comes around setSocketState(QBluetoothSocket::UnconnectedState); + emit disconnected(); +#endif } void QBluetoothSocket::disconnectFromService() @@ -666,7 +671,11 @@ void QBluetoothSocket::close() d->close(); +#ifndef QT_ANDROID_BLUETOOTH + //Android closes when the Java event loop comes around setSocketState(UnconnectedState); + emit disconnected(); +#endif } /*! diff --git a/src/bluetooth/qbluetoothsocket_bluez.cpp b/src/bluetooth/qbluetoothsocket_bluez.cpp index 6aad6603..459d9f5e 100644 --- a/src/bluetooth/qbluetoothsocket_bluez.cpp +++ b/src/bluetooth/qbluetoothsocket_bluez.cpp @@ -238,7 +238,6 @@ void QBluetoothSocketPrivate::_q_readNotify() q->setSocketError(QBluetoothSocket::UnknownSocketError); q->disconnectFromService(); - q->setSocketState(QBluetoothSocket::UnconnectedState); } else { buffer.chop(QPRIVATELINEARBUFFER_BUFFERSIZE - (readFromDevice < 0 ? 0 : readFromDevice)); @@ -259,9 +258,6 @@ void QBluetoothSocketPrivate::abort() // QBluetoothSocket::close QT_CLOSE(socket); socket = -1; - - Q_Q(QBluetoothSocket); - emit q->disconnected(); } QString QBluetoothSocketPrivate::localName() const @@ -508,17 +504,7 @@ void QBluetoothSocketPrivate::close() connectWriteNotifier->setEnabled(true); } else { - - delete readNotifier; - readNotifier = 0; - delete connectWriteNotifier; - connectWriteNotifier = 0; - - // We are disconnected now, so go to unconnected. - q->setSocketState(QBluetoothSocket::UnconnectedState); - emit q->disconnected(); - QT_CLOSE(socket); - socket = -1; + abort(); } } diff --git a/src/bluetooth/qbluetoothsocket_qnx.cpp b/src/bluetooth/qbluetoothsocket_qnx.cpp index ad4359e2..4deb4f84 100644 --- a/src/bluetooth/qbluetoothsocket_qnx.cpp +++ b/src/bluetooth/qbluetoothsocket_qnx.cpp @@ -176,8 +176,6 @@ void QBluetoothSocketPrivate::abort() ::close(socket); - q->setSocketState(QBluetoothSocket::UnconnectedState); - Q_EMIT q->disconnected(); isServerSocket = false; } |