@@ -18,7 +18,6 @@
1818
1919#include <QtConcurrent>
2020#include <QDebug>
21−#include <QFutureSynchronizer>
2221#include <QSqlQuery>
2322#include <QSqlError>
2423#include <QSqlResult>
@@ -33,24 +32,23 @@ inline QString sanitiseString(QString string) {
3332 .remove(QLatin1Char('\\'));
3433}
3534
36−WindowStateStorage::WindowStateStorage(QObject *parent):
35+WindowStateStorage::WindowStateStorage(const QString& dbName, QObject *parent):
3736 QObject(parent)
3837{
3938 const QString dbPath = QStandardPaths::writableLocation(QStandardPaths::GenericCacheLocation) + QStringLiteral("/unity8/");
4039 m_db = QSqlDatabase::addDatabase(QStringLiteral("QSQLITE"));
4140 QDir dir;
4241 dir.mkpath(dbPath);
43− m_db.setDatabaseName(dbPath + "windowstatestorage.sqlite");
42+ if (dbName != nullptr) {
43+ m_db.setDatabaseName(dbName);
44+ } else {
45+ m_db.setDatabaseName(dbPath + "windowstatestorage.sqlite");
46+ }
4447 initdb();
4548}
4649
4750WindowStateStorage::~WindowStateStorage()
4851{
49− QFutureSynchronizer<void> futureSync;
50− for (int i = 0; i < m_asyncQueries.count(); ++i) {
51− futureSync.addFuture(m_asyncQueries[i]);
52− }
53− futureSync.waitForFinished();
5452 m_db.close();
5553}
5654
@@ -110,19 +108,6 @@ int WindowStateStorage::getStage(const QString &appId, int defaultValue) const
110108 return query.value("stage").toInt();
111109}
112110
113−void WindowStateStorage::executeAsyncQuery(const QString &queryString)
114−{
115− QMutexLocker l(&s_mutex);
116− QSqlQuery query;
117−
118− bool ok = query.exec(queryString);
119− if (!ok) {
120− qWarning() << "Error executing query" << queryString
121− << "Driver error:" << query.lastError().driverText()
122− << "Database error:" << query.lastError().databaseText();
123− }
124−}
125−
126111QRect WindowStateStorage::getGeometry(const QString &windowId, const QRect &defaultValue) const
127112{
128113 QString queryString = QStringLiteral("SELECT * FROM geometry WHERE windowId = '%1';")
@@ -171,16 +156,13 @@ void WindowStateStorage::initdb()
171156void WindowStateStorage::saveValue(const QString &queryString)
172157{
173158 QMutexLocker mutexLocker(&s_mutex);
174−
175− QFuture<void> future = QtConcurrent::run(&m_threadPool, executeAsyncQuery, queryString);
176− m_asyncQueries.append(future);
177−
178− QFutureWatcher<void> *futureWatcher = new QFutureWatcher<void>();
179− futureWatcher->setFuture(future);
180− connect(futureWatcher, &QFutureWatcher<void>::finished,
181− this,
182− [=](){ m_asyncQueries.removeAll(futureWatcher->future());
183− futureWatcher->deleteLater(); });
159+ QSqlQuery query;
160+ auto ok = query.exec(queryString);
161+ if (!ok) {
162+ qWarning() << "Error executing query" << queryString
163+ << "Driver error:" << query.lastError().driverText()
164+ << "Database error:" << query.lastError().databaseText();
165+ }
184166}
185167
186168QSqlQuery WindowStateStorage::getValue(const QString &queryString) const