WindowStateStorage: use a private QThreadPool to ensure that WindowStateStorage::saveValue always has a thread available to execute the query in. (LP: #1675424)
Approved by: Lukáš Tinkl, Unity8 CI Bot
commit6250ff16cd40f35a497f03658ff2241f2d75ca63
authorFlorian Boucault <florian@boucault.net>
dateTue 28 Mar 2017, 21:45 (10 years ago)
parentb1b726e3658635
plugins/Utils/windowstatestorage.cpp+1−1
@@ -172,7 +172,7 @@ void WindowStateStorage::saveValue(const QString &queryString)
172172{
173173 QMutexLocker mutexLocker(&s_mutex);
174174
175− QFuture<void> future = QtConcurrent::run(executeAsyncQuery, queryString);
175+ QFuture<void> future = QtConcurrent::run(&m_threadPool, executeAsyncQuery, queryString);
176176 m_asyncQueries.append(future);
177177
178178 QFutureWatcher<void> *futureWatcher = new QFutureWatcher<void>();
plugins/Utils/windowstatestorage.h+2
@@ -18,6 +18,7 @@
1818#include <QSqlDatabase>
1919#include <QMutex>
2020#include <QFuture>
21+#include <QThreadPool>
2122
2223// unity-api
2324#include <unity/shell/application/Mir.h>
@@ -72,4 +73,5 @@ private:
7273 QSqlDatabase m_db;
7374
7475 QList<QFuture<void>> m_asyncQueries;
76+ QThreadPool m_threadPool;
7577};