diff options
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 |