diff options
author | Oliver Wolff <oliver.wolff@qt.io> | 2018-11-26 13:14:29 +0100 |
---|---|---|
committer | Oliver Wolff <oliver.wolff@qt.io> | 2018-11-28 06:36:22 +0000 |
commit | 25493cbb07f8cbc6c6d12cfc575a71875be06692 (patch) | |
tree | 4cc76f9b3498c3e0b31196b106f3b295565e2c45 /src/plugins | |
parent | 0b242a11b1193b74a2ab979c29e28553e47cc78e (diff) | |
download | qtlocation-25493cbb07f8cbc6c6d12cfc575a71875be06692.tar.gz |
winrt: Restart location handler on setUpdateInterval if necessary
Windows' backend will complain if we try to set the report interval
while being subscribed to position changes so we have to remove this
registration and redo it when the new interval is in effect.
Change-Id: I5b3f23a7b6e530dd0a3f673e2b8ce6f5102b7eb1
Reviewed-by: Andre de la Rocha <andre.rocha@qt.io>
Reviewed-by: Miguel Costa <miguel.costa@qt.io>
Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/position/winrt/qgeopositioninfosource_winrt.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/plugins/position/winrt/qgeopositioninfosource_winrt.cpp b/src/plugins/position/winrt/qgeopositioninfosource_winrt.cpp index 9616b1d8..fa537af7 100644 --- a/src/plugins/position/winrt/qgeopositioninfosource_winrt.cpp +++ b/src/plugins/position/winrt/qgeopositioninfosource_winrt.cpp @@ -266,6 +266,11 @@ void QGeoPositionInfoSourceWinRT::setUpdateInterval(int msec) if (msec != 0 && msec < minimumUpdateInterval()) msec = minimumUpdateInterval(); + const bool needsRestart = d->positionToken.value != 0; + + if (needsRestart) + stopHandler(); + HRESULT hr = d->locator->put_ReportInterval(msec); if (FAILED(hr)) { setError(QGeoPositionInfoSource::UnknownSourceError); @@ -276,6 +281,9 @@ void QGeoPositionInfoSourceWinRT::setUpdateInterval(int msec) d->periodicTimer.setInterval(qMax(msec, minimumUpdateInterval())); QGeoPositionInfoSource::setUpdateInterval(msec); + + if (needsRestart) + startHandler(); } int QGeoPositionInfoSourceWinRT::minimumUpdateInterval() const |