summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOleg Shparber <trollixx@gmail.com>2014-04-14 11:03:42 -0700
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-04-15 17:31:38 +0200
commit99a53598a952f775f8ce8a3b1bf66cf81cb63761 (patch)
treea43db1127a0228a8933c62a1e94e9623daf600a4
parent5f00449d4b1492142ba23211258e2370bdfa5986 (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.cpp9
-rw-r--r--src/bluetooth/qbluetoothsocket_bluez.cpp16
-rw-r--r--src/bluetooth/qbluetoothsocket_qnx.cpp2
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;
}