@@ -179,13 +179,13 @@ public:
179179
180180public Q_SLOTS:
181181
182− void saveState(const QString &windowId, int state)
182+ void saveState(const QString &windowId, WindowStateStorage::WindowState state)
183183 {
184184 QSqlDatabase connection = QSqlDatabase::database(m_connectionName);
185185 QSqlQuery query(connection);
186186 query.prepare(m_saveStateQuery);
187187 query.bindValue(":windowId", windowId);
188− query.bindValue(":state", state);
188+ query.bindValue(":state", (int)state);
189189 if (!query.exec()) {
190190 logSqlError(query);
191191 }
@@ -240,6 +240,7 @@ WindowStateStorage::WindowStateStorage(const QString& dbName, QObject *parent):
240240 QObject(parent),
241241 m_thread()
242242{
243+ qRegisterMetaType<WindowStateStorage::WindowState>("WindowStateStorage::WindowState");
243244 QString dbFile;
244245 if (dbName == nullptr) {
245246 const QString dbPath = QStandardPaths::writableLocation(QStandardPaths::GenericCacheLocation) + QStringLiteral("/unity8/");
@@ -262,6 +263,7 @@ WindowStateStorage::WindowStateStorage(const QString& dbName, QObject *parent):
262263 m_asyncOk = false;
263264 m_thread.quit();
264265 } else {
266+ connect(this, &WindowStateStorage::saveState, m_asyncQuery, &AsyncQuery::saveState);
265267 connect(this, &WindowStateStorage::saveGeometry, m_asyncQuery, &AsyncQuery::saveGeometry);
266268 connect(this, &WindowStateStorage::saveStage, m_asyncQuery, &AsyncQuery::saveStage);
267269 m_asyncOk = true;
@@ -274,20 +276,6 @@ WindowStateStorage::~WindowStateStorage()
274276 m_thread.wait();
275277}
276278
277−void WindowStateStorage::saveState(const QString &windowId, WindowStateStorage::WindowState windowState)
278−{
279− if (!m_asyncOk) {
280− return;
281− }
282− // This could be a simple connection like all the other save* methods
283− // on AsyncQuery, but WindowStateStorage::WindowState can't be used
284− // on it directly.
285− QMetaObject::invokeMethod(m_asyncQuery, "saveState", Qt::QueuedConnection,
286− Q_ARG(const QString&, windowId),
287− Q_ARG(int, (int)windowState)
288− );
289−}
290−
291279WindowStateStorage::WindowState WindowStateStorage::getState(const QString &windowId, WindowStateStorage::WindowState defaultValue) const
292280{
293281 if (!m_asyncOk) {