From ad716f0a9d69b08538ff3f25d28649284287d246 Mon Sep 17 00:00:00 2001 From: Marja Hassinen Date: Mon, 20 Sep 2010 13:29:33 +0300 Subject: libcontextsubscriber fix: if plugin loading failed, waitForSubscription hanged. --- libcontextsubscriber/src/provider.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'libcontextsubscriber/src/provider.cpp') 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 -- cgit v1.2.3