diff options
author | Nedim Hadzic <nhadzic@blackberry.com> | 2014-02-21 14:09:59 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-02-26 16:19:49 +0100 |
commit | 98431098856cab7d386fa2921eef837ce5e6e03f (patch) | |
tree | 82520e5895479b0b85e2951fa1dd54102befcdba /src/bluetooth/qbluetoothserviceinfo_qnx.cpp | |
parent | 3ea69e89d43911f68203fcb40fee80a6bcd04ed5 (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.cpp | 23 |
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 |