summaryrefslogtreecommitdiffstats
path: root/src/bluetooth/qbluetoothserviceinfo_qnx.cpp
diff options
context:
space:
mode:
authorNedim Hadzic <nhadzic@blackberry.com>2014-02-21 14:09:59 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-02-26 16:19:49 +0100
commit98431098856cab7d386fa2921eef837ce5e6e03f (patch)
tree82520e5895479b0b85e2951fa1dd54102befcdba /src/bluetooth/qbluetoothserviceinfo_qnx.cpp
parent3ea69e89d43911f68203fcb40fee80a6bcd04ed5 (diff)
QNX Service registered value fix
Once registerService() was called isRegistered() will always return true. A call to unregisterService() now resets the value. Cleaning fake server port hash. Task-number: QTBUG-36626 Change-Id: I452651266192e5773b8330e5f7c02885adff2279 Reviewed-by: Alex Blasche <alexander.blasche@digia.com>
Diffstat (limited to 'src/bluetooth/qbluetoothserviceinfo_qnx.cpp')
-rw-r--r--src/bluetooth/qbluetoothserviceinfo_qnx.cpp23
1 files changed, 19 insertions, 4 deletions
diff --git a/src/bluetooth/qbluetoothserviceinfo_qnx.cpp b/src/bluetooth/qbluetoothserviceinfo_qnx.cpp
index 0ce566e3..30dac958 100644
--- a/src/bluetooth/qbluetoothserviceinfo_qnx.cpp
+++ b/src/bluetooth/qbluetoothserviceinfo_qnx.cpp
@@ -61,16 +61,31 @@ bool QBluetoothServiceInfoPrivate::isRegistered() const
return registered;
}
+extern QHash<QBluetoothServerPrivate*, int> __fakeServerPorts;
+
bool QBluetoothServiceInfoPrivate::unregisterService()
{
if (!registered)
return false;
-
- return false;
+ if (serverChannel() == -1)
+ return false;
+ if ( __fakeServerPorts.key(serverChannel()) != 0) {
+ if (!ppsSendControlMessage("deregister_server", 0x1101, attributes.value(QBluetoothServiceInfo::ServiceId).value<QBluetoothUuid>(), QString(),
+ attributes.value(QBluetoothServiceInfo::ServiceName).toString(),
+ __fakeServerPorts.key(serverChannel()), BT_SPP_SERVER_SUBTYPE)) {
+ return false;
+ }
+ else {
+ __fakeServerPorts.remove(__fakeServerPorts.key(serverChannel()));
+ registered = false;
+ return true;
+ }
+ }
+ else {
+ return false;
+ }
}
-extern QHash<QBluetoothServerPrivate*, int> __fakeServerPorts;
-
bool QBluetoothServiceInfoPrivate::registerService(const QBluetoothAddress& localAdapter)
{
Q_UNUSED(localAdapter); //QNX always uses default local adapter