summaryrefslogtreecommitdiffstats
path: root/src/bluetooth/qlowenergycontrollernew.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/bluetooth/qlowenergycontrollernew.cpp')
-rw-r--r--src/bluetooth/qlowenergycontrollernew.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/bluetooth/qlowenergycontrollernew.cpp b/src/bluetooth/qlowenergycontrollernew.cpp
index 967b1a87..0a9800ae 100644
--- a/src/bluetooth/qlowenergycontrollernew.cpp
+++ b/src/bluetooth/qlowenergycontrollernew.cpp
@@ -100,6 +100,14 @@ void QLowEnergyControllerNewPrivate::setState(
emit q->stateChanged(state);
}
+void QLowEnergyControllerNewPrivate::invalidateServices()
+{
+ foreach (const QBluetoothUuid &service, serviceList.keys()) {
+ ServiceDetails detail = serviceList.take(service);
+ detail.service.data()->setState(QLowEnergyService::InvalidService);
+ }
+}
+
QLowEnergyControllerNew::QLowEnergyControllerNew(
const QBluetoothAddress &remoteDevice,
QObject *parent)
@@ -175,6 +183,7 @@ void QLowEnergyControllerNew::disconnectFromDevice()
if (state() == QLowEnergyControllerNew::UnconnectedState)
return;
+ d->invalidateServices();
d->disconnectFromDevice();
}
@@ -185,7 +194,6 @@ void QLowEnergyControllerNew::discoverServices()
if (d->state != QLowEnergyControllerNew::ConnectedState)
return;
- d->serviceList.clear();
d->discoverServices();
}