diff --git a/src/core/plugins/plugincontainer.cpp b/src/core/plugins/plugincontainer.cpp index 22975aa..6876ee5 100644 --- a/src/core/plugins/plugincontainer.cpp +++ b/src/core/plugins/plugincontainer.cpp @@ -87,7 +87,7 @@ bool PluginContainer::isLoaded() const void PluginContainer::updatePluginCache() { snoreDebug(SNORE_DEBUG) << "Updating plugin cache"; - foreach(PluginContaienrHash list, s_pluginCache) { + for(auto list : s_pluginCache) { foreach(PluginContainer * p, list.values()) { delete p; } diff --git a/src/core/snore.cpp b/src/core/snore.cpp index c6dacf1..54e5a7b 100644 --- a/src/core/snore.cpp +++ b/src/core/snore.cpp @@ -29,11 +29,15 @@ #include #include +#include using namespace Snore; SnoreCore::SnoreCore() { + if (QThread::currentThread() != qApp->thread() ) { + moveToThread(qApp->thread()); + } SnoreCorePrivate::registerMetaTypes(); d_ptr = new SnoreCorePrivate(); Q_D(SnoreCore); @@ -55,6 +59,11 @@ SnoreCore::~SnoreCore() void SnoreCore::loadPlugins(SnorePlugin::PluginTypes types) { + if (QThread::currentThread() != thread() ) { + snoreDebug(SNORE_DEBUG) << "Delayed Plugin loading." << QThread::currentThread() << thread(); + QMetaObject::invokeMethod(this, "loadPlugins", Qt::BlockingQueuedConnection, Q_ARG(Snore::SnorePlugin::PluginTypes, types)); + return; + } Q_D(SnoreCore); setValue("PluginTypes", QVariant::fromValue(types), LOCAL_SETTING); for (SnorePlugin::PluginTypes type : SnorePlugin::types()) { @@ -64,7 +73,6 @@ void SnoreCore::loadPlugins(SnorePlugin::PluginTypes types) if (!plugin) { continue; } - switch (info->type()) { case SnorePlugin::BACKEND: break; diff --git a/src/core/snore.h b/src/core/snore.h index 4ba4650..274b51b 100644 --- a/src/core/snore.h +++ b/src/core/snore.h @@ -71,7 +71,7 @@ public: * * @param types the type of tha plugin */ - void loadPlugins(SnorePlugin::PluginTypes types); + Q_INVOKABLE void loadPlugins(Snore::SnorePlugin::PluginTypes types); /** * Broadcast a notification. diff --git a/src/plugins/backends/growl/growlbackend.cpp b/src/plugins/backends/growl/growlbackend.cpp index c61aec7..a85cb9a 100644 --- a/src/plugins/backends/growl/growlbackend.cpp +++ b/src/plugins/backends/growl/growlbackend.cpp @@ -41,7 +41,7 @@ GrowlBackend::~GrowlBackend() bool GrowlBackend::initialize() { - if (Growl::init((GROWL_CALLBACK)&GrowlBackend::gntpCallback) && Growl::isRunning(GROWL_TCP)) { + if (Growl::init((GROWL_CALLBACK)&GrowlBackend::gntpCallback) && Growl::isRunning(GROWL_TCP, value("Host").toString().toUtf8().constData())) { return SnoreBackend::initialize(); } snoreDebug(SNORE_DEBUG) << "Growl is not running";