summaryrefslogtreecommitdiffstats
path: root/src/sensors/qsensormanager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/sensors/qsensormanager.cpp')
-rw-r--r--src/sensors/qsensormanager.cpp9
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()