From 4a44e0b40422680401c0fd6f588618d2c7a0ff2c Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Thu, 14 Jan 2016 15:38:53 +0100 Subject: 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 --- src/bluetooth/qlowenergycontroller.cpp | 3 +++ src/bluetooth/qlowenergycontroller_android.cpp | 4 ++++ src/bluetooth/qlowenergycontroller_bluez.cpp | 11 +++++++---- src/bluetooth/qlowenergycontroller_p.cpp | 4 ++++ src/bluetooth/qlowenergycontroller_p.h | 2 ++ 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 >(); +} + +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(); -- cgit v1.2.3