summaryrefslogtreecommitdiffstats
path: root/src/bluetooth/qbluetoothserviceinfo_qnx.cpp
diff options
context:
space:
mode:
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