diff options
author | Frederik Gladhorn <frederik.gladhorn@digia.com> | 2014-08-12 16:31:30 +0200 |
---|---|---|
committer | Frederik Gladhorn <frederik.gladhorn@digia.com> | 2014-08-12 16:32:04 +0200 |
commit | 15e924486a410780fefbc5a95fae8886e3190925 (patch) | |
tree | c6d784f1c528a0fe75367db415240fc4dfe5c73a /src/plugins/sensors/sensorfw/sensorfwtapsensor.cpp | |
parent | ea7af7f00886f77941b81262e597c3b7f3477f48 (diff) | |
parent | 4c29e9149a583b48e563ad44b59666a9d45f9347 (diff) |
Merge remote-tracking branch 'origin/5.3' into 5.4
Conflicts:
src/plugins/sensors/sensorfw/sensorfwproximitysensor.cpp
src/sensors/qcompass.cpp
Change-Id: Idfcbbfe1757a4b827663453abc27f4026cd3d752
Diffstat (limited to 'src/plugins/sensors/sensorfw/sensorfwtapsensor.cpp')
-rw-r--r-- | src/plugins/sensors/sensorfw/sensorfwtapsensor.cpp | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/src/plugins/sensors/sensorfw/sensorfwtapsensor.cpp b/src/plugins/sensors/sensorfw/sensorfwtapsensor.cpp index 1d7e950c..01ee7789 100644 --- a/src/plugins/sensors/sensorfw/sensorfwtapsensor.cpp +++ b/src/plugins/sensors/sensorfw/sensorfwtapsensor.cpp @@ -45,8 +45,8 @@ char const * const SensorfwTapSensor::id("sensorfw.tapsensor"); SensorfwTapSensor::SensorfwTapSensor(QSensor *sensor) : SensorfwSensorBase(sensor), + m_initDone(false), m_isOnceStarted(false) - , m_initDone(false) { init(); setReading<QTapReading>(&m_reading); @@ -58,6 +58,9 @@ SensorfwTapSensor::SensorfwTapSensor(QSensor *sensor) void SensorfwTapSensor::start() { + if (reinitIsNeeded) + init(); + QTapSensor * const tapSensor = qobject_cast<QTapSensor *>(sensor()); bool b = tapSensor->returnDoubleTapEvents(); @@ -68,9 +71,14 @@ void SensorfwTapSensor::start() } else m_isDoubleTapSensor = b; - if (!m_isOnceStarted || (m_isOnceStarted && isDoubleTapSensor != m_isDoubleTapSensor)) - ((TapSensorChannelInterface*)m_sensorInterface)-> - setTapType(m_isDoubleTapSensor?TapSensorChannelInterface::Double:TapSensorChannelInterface::Single); + if (!m_isOnceStarted || (m_isOnceStarted && isDoubleTapSensor != m_isDoubleTapSensor)) { + TapSensorChannelInterface *iface = static_cast<TapSensorChannelInterface *>(m_sensorInterface); + if (!iface) { + qWarning() << "Sensor interface is not initialized"; + return; + } + iface->setTapType(m_isDoubleTapSensor?TapSensorChannelInterface::Double:TapSensorChannelInterface::Single); + } SensorfwSensorBase::start(); // Set tap type (single/double) @@ -103,6 +111,7 @@ void SensorfwTapSensor::slotDataAvailable(const Tap& data) bool SensorfwTapSensor::doConnect() { + Q_ASSERT(m_sensorInterface); return QObject::connect(m_sensorInterface, SIGNAL(dataAvailable(Tap)), this, SLOT(slotDataAvailable(Tap))); } |