diff options
author | Joona Petrell <joona.petrell@jollamobile.com> | 2016-07-26 12:15:32 +0300 |
---|---|---|
committer | Lorn Potter <lorn.potter@canonical.com> | 2016-07-28 00:11:03 +0000 |
commit | 614326721259f1424981444ec84b6b9f4d6400ef (patch) | |
tree | 2964c37824345f27bcc99bfb7491b20e1d53e0ac /src/plugins | |
parent | a0a8e0395965f0a62ddaaa7c0ad8228aa9990476 (diff) | |
download | qtsensors-614326721259f1424981444ec84b6b9f4d6400ef.tar.gz |
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')
-rw-r--r-- | src/plugins/sensors/sensorfw/sensorfwsensorbase.cpp | 12 | ||||
-rw-r--r-- | src/plugins/sensors/sensorfw/sensorfwsensorbase.h | 1 |
2 files changed, 10 insertions, 3 deletions
diff --git a/src/plugins/sensors/sensorfw/sensorfwsensorbase.cpp b/src/plugins/sensors/sensorfw/sensorfwsensorbase.cpp index 1702777..27a07ad 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 df8ca84..3e5e053 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(); |