[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: kdesupport/qca/src
From: Justin Karneges <infiniti () affinix ! com>
Date: 2009-04-24 15:23:37
Message-ID: 1240586617.624105.20381.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 958758 by infiniti:
lazily initialize default provider, to reduce the amount of code
executing during init. in particular, this is to avoid usage of
QSettings, which should not be used before qapp construction.
M +44 -24 qca_core.cpp
M +2 -1 qca_plugin.cpp
--- trunk/kdesupport/qca/src/qca_core.cpp #958757:958758
@@ -61,6 +61,7 @@
public:
int refs;
bool secmem;
+ bool loaded;
bool first_scan;
QString app_name;
QMutex name_mutex;
@@ -79,6 +80,7 @@
{
refs = 0;
secmem = false;
+ loaded = false;
first_scan = false;
rng = 0;
logger = 0;
@@ -96,6 +98,17 @@
logger = 0;
}
+ void ensure_loaded()
+ {
+ // probably we shouldn't overload scan mutex, or else rename it
+ QMutexLocker locker(&scan_mutex);
+ if(!loaded)
+ {
+ loaded = true;
+ manager->setDefault(create_default_provider()); // manager owns it
+ }
+ }
+
bool ensure_first_scan()
{
scan_mutex.lock();
@@ -213,8 +226,6 @@
// plugins that have active objects (notably KeyStore). we'll use a
// post routine to force qca to deinit first.
qAddPostRoutine(deinit);
-
- global->manager->setDefault(create_default_provider()); // manager owns it
}
void init()
@@ -244,6 +255,15 @@
return true;
}
+static bool global_check_load()
+{
+ Q_ASSERT(global);
+ if(!global)
+ return false;
+ global->ensure_loaded();
+ return true;
+}
+
QMutex *global_random_mutex()
{
return &global->rng_mutex;
@@ -266,7 +286,7 @@
bool haveSecureRandom()
{
- if(!global_check())
+ if(!global_check_load())
return false;
QMutexLocker locker(global_random_mutex());
@@ -278,7 +298,7 @@
bool isSupported(const QStringList &features, const QString &provider)
{
- if(!global_check())
+ if(!global_check_load())
return false;
// single
@@ -319,7 +339,7 @@
QStringList supportedFeatures()
{
- if(!global_check())
+ if(!global_check_load())
return QStringList();
// query all features
@@ -329,7 +349,7 @@
QStringList defaultFeatures()
{
- if(!global_check())
+ if(!global_check_load())
return QStringList();
return global->manager->find("default")->features();
@@ -337,7 +357,7 @@
ProviderList providers()
{
- if(!global_check())
+ if(!global_check_load())
return ProviderList();
global->ensure_first_scan();
@@ -347,7 +367,7 @@
bool insertProvider(Provider *p, int priority)
{
- if(!global_check())
+ if(!global_check_load())
return false;
global->ensure_first_scan();
@@ -357,7 +377,7 @@
void setProviderPriority(const QString &name, int priority)
{
- if(!global_check())
+ if(!global_check_load())
return;
global->ensure_first_scan();
@@ -367,7 +387,7 @@
int providerPriority(const QString &name)
{
- if(!global_check())
+ if(!global_check_load())
return -1;
global->ensure_first_scan();
@@ -377,7 +397,7 @@
Provider *findProvider(const QString &name)
{
- if(!global_check())
+ if(!global_check_load())
return 0;
global->ensure_first_scan();
@@ -387,7 +407,7 @@
Provider *defaultProvider()
{
- if(!global_check())
+ if(!global_check_load())
return 0;
return global->manager->find("default");
@@ -395,7 +415,7 @@
void scanForPlugins()
{
- if(!global_check())
+ if(!global_check_load())
return;
global->scan();
@@ -404,7 +424,7 @@
void unloadAllPlugins()
{
- if(!global_check())
+ if(!global_check_load())
return;
global->unloadAllPlugins();
@@ -412,7 +432,7 @@
QString pluginDiagnosticText()
{
- if(!global_check())
+ if(!global_check_load())
return QString();
return global->manager->diagnosticText();
@@ -420,7 +440,7 @@
void clearPluginDiagnosticText()
{
- if(!global_check())
+ if(!global_check_load())
return;
global->manager->clearDiagnosticText();
@@ -428,7 +448,7 @@
void appendPluginDiagnosticText(const QString &text)
{
- if(!global_check())
+ if(!global_check_load())
return;
global->manager->appendDiagnosticText(text);
@@ -436,7 +456,7 @@
void setProperty(const QString &name, const QVariant &value)
{
- if(!global_check())
+ if(!global_check_load())
return;
QMutexLocker locker(&global->prop_mutex);
@@ -446,7 +466,7 @@
QVariant getProperty(const QString &name)
{
- if(!global_check())
+ if(!global_check_load())
return QVariant();
QMutexLocker locker(&global->prop_mutex);
@@ -519,7 +539,7 @@
void setProviderConfig(const QString &name, const QVariantMap &config)
{
- if(!global_check())
+ if(!global_check_load())
return;
if(!configIsValid(config))
@@ -536,7 +556,7 @@
QVariantMap getProviderConfig(const QString &name)
{
- if(!global_check())
+ if(!global_check_load())
return QVariantMap();
QVariantMap conf;
@@ -576,7 +596,7 @@
void saveProviderConfig(const QString &name)
{
- if(!global_check())
+ if(!global_check_load())
return;
QMutexLocker locker(&global->config_mutex);
@@ -769,7 +789,7 @@
Provider::Context *getContext(const QString &type, const QString &provider)
{
- if(!global_check())
+ if(!global_check_load())
return 0;
Provider *p;
@@ -784,7 +804,7 @@
Provider::Context *getContext(const QString &type, Provider *_p)
{
- if(!global_check())
+ if(!global_check_load())
return 0;
Provider *p;
--- trunk/kdesupport/qca/src/qca_plugin.cpp #958757:958758
@@ -308,7 +308,8 @@
ProviderManager::~ProviderManager()
{
- def->deinit();
+ if(def)
+ def->deinit();
unloadAll();
delete def;
g_pluginman = 0;
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic