summaryrefslogtreecommitdiffstats
path: root/src/plugins/sensors/sensorfw/sensorfwtapsensor.cpp
diff options
context:
space:
mode:
authorFrederik Gladhorn <frederik.gladhorn@digia.com>2014-08-12 16:31:30 +0200
committerFrederik Gladhorn <frederik.gladhorn@digia.com>2014-08-12 16:32:04 +0200
commit15e924486a410780fefbc5a95fae8886e3190925 (patch)
treec6d784f1c528a0fe75367db415240fc4dfe5c73a /src/plugins/sensors/sensorfw/sensorfwtapsensor.cpp
parentea7af7f00886f77941b81262e597c3b7f3477f48 (diff)
parent4c29e9149a583b48e563ad44b59666a9d45f9347 (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.cpp17
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)));
}