on xenial help sign in
WindowStateStorage: use a private QThreadPool to ensure that WindowStateStorage::saveValue always has a thread available to execute the query in. (LP: #1675424)
6250ff1Florian Boucault
plugins/Utils/windowstatestorage.cpp+1−1
@@ -172,7 +172,7 @@ void WindowStateStorage::saveValue(const QString &queryString)
172{
172{
173 QMutexLocker mutexLocker(&s_mutex);
173 QMutexLocker mutexLocker(&s_mutex);
174
174
175− QFuture<void> future = QtConcurrent::run(executeAsyncQuery, queryString);
175+ QFuture<void> future = QtConcurrent::run(&m_threadPool, executeAsyncQuery, queryString);
176 m_asyncQueries.append(future);
176 m_asyncQueries.append(future);
177
177
178 QFutureWatcher<void> *futureWatcher = new QFutureWatcher<void>();
178 QFutureWatcher<void> *futureWatcher = new QFutureWatcher<void>();
plugins/Utils/windowstatestorage.h+2
@@ -18,6 +18,7 @@
18#include <QSqlDatabase>
18#include <QSqlDatabase>
19#include <QMutex>
19#include <QMutex>
20#include <QFuture>
20#include <QFuture>
21+#include <QThreadPool>
21
22
22// unity-api
23// unity-api
23#include <unity/shell/application/Mir.h>
24#include <unity/shell/application/Mir.h>
@@ -72,4 +73,5 @@ private:
72 QSqlDatabase m_db;
73 QSqlDatabase m_db;
73
74
74 QList<QFuture<void>> m_asyncQueries;
75 QList<QFuture<void>> m_asyncQueries;
76+ QThreadPool m_threadPool;
75};
77};