summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@theqtcompany.com>2016-01-14 15:38:53 +0100
committerChristian Kandeler <christian.kandeler@theqtcompany.com>2016-01-15 09:42:48 +0000
commit4a44e0b40422680401c0fd6f588618d2c7a0ff2c (patch)
tree90acae791a07a48c0deba14bf90be33599eb4338
parent6b3ef058614fe07942a3506fd4191d12b3659fe9 (diff)
downloadqtconnectivity-4a44e0b40422680401c0fd6f588618d2c7a0ff2c.tar.gz
Bluetooth LE: Fix premature initialization of HCI manager.
The private class used a member in its constructor that was only set afterwards. Change-Id: I19b7ca2a5048771a447d63a56ad10ad56c311e91 Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
-rw-r--r--src/bluetooth/qlowenergycontroller.cpp3
-rw-r--r--src/bluetooth/qlowenergycontroller_android.cpp4
-rw-r--r--src/bluetooth/qlowenergycontroller_bluez.cpp11
-rw-r--r--src/bluetooth/qlowenergycontroller_p.cpp4
-rw-r--r--src/bluetooth/qlowenergycontroller_p.h2
5 files changed, 20 insertions, 4 deletions
diff --git a/src/bluetooth/qlowenergycontroller.cpp b/src/bluetooth/qlowenergycontroller.cpp
index 3fb68e19..0d5d8bc6 100644
--- a/src/bluetooth/qlowenergycontroller.cpp
+++ b/src/bluetooth/qlowenergycontroller.cpp
@@ -412,6 +412,7 @@ QLowEnergyController::QLowEnergyController(
d->remoteDevice = remoteDevice;
d->localAdapter = QBluetoothLocalDevice().address();
d->addressType = QLowEnergyController::PublicAddress;
+ d->init();
}
/*!
@@ -437,6 +438,7 @@ QLowEnergyController::QLowEnergyController(
d->localAdapter = QBluetoothLocalDevice().address();
d->addressType = QLowEnergyController::PublicAddress;
d->remoteName = remoteDeviceInfo.name();
+ d->init();
}
/*!
@@ -464,6 +466,7 @@ QLowEnergyController::QLowEnergyController(
d->q_ptr = this;
d->remoteDevice = remoteDevice;
d->localAdapter = localDevice;
+ d->init();
}
/*!
diff --git a/src/bluetooth/qlowenergycontroller_android.cpp b/src/bluetooth/qlowenergycontroller_android.cpp
index cb08b6f9..385c00e6 100644
--- a/src/bluetooth/qlowenergycontroller_android.cpp
+++ b/src/bluetooth/qlowenergycontroller_android.cpp
@@ -52,6 +52,10 @@ QLowEnergyControllerPrivate::~QLowEnergyControllerPrivate()
{
}
+void QLowEnergyControllerPrivate::init()
+{
+}
+
void QLowEnergyControllerPrivate::connectToDevice()
{
// required to pass unit test on default backend
diff --git a/src/bluetooth/qlowenergycontroller_bluez.cpp b/src/bluetooth/qlowenergycontroller_bluez.cpp
index a00ac565..1e0f726e 100644
--- a/src/bluetooth/qlowenergycontroller_bluez.cpp
+++ b/src/bluetooth/qlowenergycontroller_bluez.cpp
@@ -207,7 +207,14 @@ QLowEnergyControllerPrivate::QLowEnergyControllerPrivate()
{
registerQLowEnergyControllerMetaType();
qRegisterMetaType<QList<QLowEnergyHandle> >();
+}
+
+QLowEnergyControllerPrivate::~QLowEnergyControllerPrivate()
+{
+}
+void QLowEnergyControllerPrivate::init()
+{
hciManager = new HciManager(localAdapter, this);
if (!hciManager->isValid())
return;
@@ -217,10 +224,6 @@ QLowEnergyControllerPrivate::QLowEnergyControllerPrivate()
this, SLOT(encryptionChangedEvent(QBluetoothAddress,bool)));
}
-QLowEnergyControllerPrivate::~QLowEnergyControllerPrivate()
-{
-}
-
void QLowEnergyControllerPrivate::connectToDevice()
{
if (remoteDevice.isNull()) {
diff --git a/src/bluetooth/qlowenergycontroller_p.cpp b/src/bluetooth/qlowenergycontroller_p.cpp
index 79addae2..c16e2733 100644
--- a/src/bluetooth/qlowenergycontroller_p.cpp
+++ b/src/bluetooth/qlowenergycontroller_p.cpp
@@ -47,6 +47,10 @@ QLowEnergyControllerPrivate::~QLowEnergyControllerPrivate()
{
}
+void QLowEnergyControllerPrivate::init()
+{
+}
+
void QLowEnergyControllerPrivate::connectToDevice()
{
// required to pass unit test on default backend
diff --git a/src/bluetooth/qlowenergycontroller_p.h b/src/bluetooth/qlowenergycontroller_p.h
index 40318700..fae26149 100644
--- a/src/bluetooth/qlowenergycontroller_p.h
+++ b/src/bluetooth/qlowenergycontroller_p.h
@@ -96,6 +96,8 @@ public:
QLowEnergyControllerPrivate();
~QLowEnergyControllerPrivate();
+ void init();
+
void setError(QLowEnergyController::Error newError);
bool isValidLocalAdapter();