summaryrefslogtreecommitdiffstats
path: root/src/plugins/sensors/sensorfw
diff options
context:
space:
mode:
authorJoona Petrell <joona.petrell@jollamobile.com>2016-07-26 12:15:32 +0300
committerLorn Potter <lorn.potter@canonical.com>2016-07-28 00:11:03 +0000
commit614326721259f1424981444ec84b6b9f4d6400ef (patch)
tree2964c37824345f27bcc99bfb7491b20e1d53e0ac /src/plugins/sensors/sensorfw
parenta0a8e0395965f0a62ddaaa7c0ad8228aa9990476 (diff)
Retry failed sensor start once DBus service becomes available
When sensorfw is restarting/recovering DBus service is momentarily not available. Give it another change once the service becomes registered. Change-Id: I6fd3e5985ac60cfffbc84ff86aabe9cebe110ab6 Reviewed-by: Lorn Potter <lorn.potter@canonical.com>
Diffstat (limited to 'src/plugins/sensors/sensorfw')
-rw-r--r--src/plugins/sensors/sensorfw/sensorfwsensorbase.cpp12
-rw-r--r--src/plugins/sensors/sensorfw/sensorfwsensorbase.h1
2 files changed, 10 insertions, 3 deletions
diff --git a/src/plugins/sensors/sensorfw/sensorfwsensorbase.cpp b/src/plugins/sensors/sensorfw/sensorfwsensorbase.cpp
index 17027778..27a07ad6 100644
--- a/src/plugins/sensors/sensorfw/sensorfwsensorbase.cpp
+++ b/src/plugins/sensors/sensorfw/sensorfwsensorbase.cpp
@@ -59,7 +59,8 @@ SensorfwSensorBase::SensorfwSensorBase(QSensor *sensor)
m_efficientBufferSize(1),
m_maxBufferSize(1),
m_available(false),
- running(false)
+ running(false),
+ m_attemptRestart(false)
{
watcher = new QDBusServiceWatcher("com.nokia.SensorService",QDBusConnection::systemBus(),
@@ -131,8 +132,12 @@ void SensorfwSensorBase::start()
if (returnCode == 0) {
running = true;
return;
+ } else if (returnCode == QDBusError::ServiceUnknown) {
+ m_attemptRestart = true;
+ qWarning() << "m_sensorInterface did not start, DBus service unknown. Waiting for service registration and retrying.";
+ } else {
+ qWarning() << "m_sensorInterface did not start, error code:" << returnCode;
}
- qWarning() << "m_sensorInterface did not start, error code:" << returnCode;
}
sensorStopped();
}
@@ -142,6 +147,7 @@ void SensorfwSensorBase::stop()
if (m_sensorInterface)
m_sensorInterface->stop();
running = false;
+ m_attemptRestart = false;
}
void SensorfwSensorBase::setRanges(qreal correctionFactor)
@@ -219,7 +225,7 @@ void SensorfwSensorBase::connectToSensord()
m_remoteSensorManager = 0;
return;
}
- if (running) {
+ if (running || m_attemptRestart) {
stop();
reinitIsNeeded = true;
start();
diff --git a/src/plugins/sensors/sensorfw/sensorfwsensorbase.h b/src/plugins/sensors/sensorfw/sensorfwsensorbase.h
index df8ca844..3e5e0538 100644
--- a/src/plugins/sensors/sensorfw/sensorfwsensorbase.h
+++ b/src/plugins/sensors/sensorfw/sensorfwsensorbase.h
@@ -113,6 +113,7 @@ private:
QDBusServiceWatcher *watcher;
bool m_available;
bool running;
+ bool m_attemptRestart;
private slots:
void connectToSensord();
void sensordUnregistered();