From 303a9ec664b138050190306be76fa201dcc27cc8 Mon Sep 17 00:00:00 2001 From: Szabolcs David Date: Fri, 25 Oct 2019 11:25:44 +0200 Subject: Fix flakiness of QGeoPositionInfoSource::createDefaultSource() After ac899dcc4, createDefaultSource() uses the first available position plugin to create an info source - even if that is not valid. The non-deterministically sorted list of plugins results a flaky behavior, especially when two plugins (geoclue2 and serialnmea) have the same priority and one of them is unconfigured and not supposed to work. Bring back the ability to find the first valid position plugin. Change-Id: I82947e59252ac3727478fe14fd328338b54b4dea Reviewed-by: Paolo Angelelli --- src/positioning/qgeopositioninfosource.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/positioning/qgeopositioninfosource.cpp b/src/positioning/qgeopositioninfosource.cpp index 4690f8a3..0610bd79 100644 --- a/src/positioning/qgeopositioninfosource.cpp +++ b/src/positioning/qgeopositioninfosource.cpp @@ -374,8 +374,11 @@ QGeoPositionInfoSource *QGeoPositionInfoSource::createDefaultSource(const QVaria QList plugins = QGeoPositionInfoSourcePrivate::pluginsSorted(); foreach (const QJsonObject &obj, plugins) { if (obj.value(QStringLiteral("Position")).isBool() - && obj.value(QStringLiteral("Position")).toBool()) - return createSource_real(obj, parameters, parent); + && obj.value(QStringLiteral("Position")).toBool()) { + QGeoPositionInfoSource *source = createSource_real(obj, parameters, parent); + if (source) + return source; + } } return nullptr; } -- cgit v1.2.1