aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarja Hassinen <marja.hassinen@nokia.com>2010-09-20 13:29:33 +0300
committerMarja Hassinen <marja.hassinen@nokia.com>2010-09-20 13:29:33 +0300
commitad716f0a9d69b08538ff3f25d28649284287d246 (patch)
tree1015477b3af8861410819ea080129768aa3e9eb8
parentca5f48f21a443b3805eb125116f1c361ad0fc45d (diff)
libcontextsubscriber fix: if plugin loading failed, waitForSubscription hanged.
-rw-r--r--libcontextsubscriber/src/provider.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/libcontextsubscriber/src/provider.cpp b/libcontextsubscriber/src/provider.cpp
index d31d80d4..8826575c 100644
--- a/libcontextsubscriber/src/provider.cpp
+++ b/libcontextsubscriber/src/provider.cpp
@@ -164,6 +164,12 @@ void Provider::constructPlugin()
contextCritical() << "Illegal plugin name" << providerInfo.plugin << ", doesn't start with /";
}
+ // Connect the subscribeFinished signal early enough; if plugin loading has
+ // failed, we still need to send it.
+ HandleSignalRouter* handleSignalRouter = HandleSignalRouter::instance();
+ sconnect(this, SIGNAL(subscribeFinished(Provider *,QString)),
+ handleSignalRouter, SLOT(onSubscribeFinished(Provider *,QString)));
+
if (plugin == 0) {
pluginState = FAILED;
handleSubscribes();
@@ -171,7 +177,6 @@ void Provider::constructPlugin()
}
// Connect the signal of changing values to the class who handles it
- HandleSignalRouter* handleSignalRouter = HandleSignalRouter::instance();
sconnect(plugin, SIGNAL(valueChanged(QString, TimedValue)),
this, SLOT(onPluginValueChanged(QString, TimedValue)));
sconnect(plugin, SIGNAL(valueChanged(QString, QVariant)),
@@ -197,8 +202,6 @@ void Provider::constructPlugin()
this, SLOT(onPluginSubscribeFinished(QString)), Qt::QueuedConnection);
sconnect(plugin, SIGNAL(subscribeFailed(QString, QString)),
this, SLOT(onPluginSubscribeFailed(QString, QString)), Qt::QueuedConnection);
- sconnect(this, SIGNAL(subscribeFinished(Provider *,QString)),
- handleSignalRouter, SLOT(onSubscribeFinished(Provider *,QString)));
}
/// Updates \c pluginState to \c READY and requests subscription for