diff options
Diffstat (limited to 'src/sensors/qsensormanager.cpp')
-rw-r--r-- | src/sensors/qsensormanager.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/sensors/qsensormanager.cpp b/src/sensors/qsensormanager.cpp index 1978e8c5..a7714508 100644 --- a/src/sensors/qsensormanager.cpp +++ b/src/sensors/qsensormanager.cpp @@ -84,6 +84,7 @@ public: bool sensorsChanged; QList<QSensorChangesInterface*> changeListeners; + QSet <QObject *> seenPlugins; Q_SIGNALS: void availableSensorsChanged(); @@ -154,15 +155,21 @@ Q_SENSORS_EXPORT void sensors_unit_test_hook(int index) static void initPlugin(QObject *o) { if (!o) return; + QSensorManagerPrivate *d = sensorManagerPrivate(); + if (d->seenPlugins.contains(o)) + return; QSensorChangesInterface *changes = qobject_cast<QSensorChangesInterface*>(o); if (changes) d->changeListeners << changes; QSensorPluginInterface *plugin = qobject_cast<QSensorPluginInterface*>(o); - if (plugin) + + if (plugin) { + d->seenPlugins.insert(o); plugin->registerSensors(); + } } void QSensorManagerPrivate::loadPlugins() |