From 89214766d8e3e7b8dd749a1fa18a5b9727f5010d Mon Sep 17 00:00:00 2001 From: Unit 193 Date: Sun, 14 Dec 2014 08:24:26 -0500 Subject: Imported Upstream version 3.0.0 --- .../coreSQLiteStudio/dbobjectorganizer.cpp | 24 +++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) (limited to 'SQLiteStudio3/coreSQLiteStudio/dbobjectorganizer.cpp') diff --git a/SQLiteStudio3/coreSQLiteStudio/dbobjectorganizer.cpp b/SQLiteStudio3/coreSQLiteStudio/dbobjectorganizer.cpp index 61f5cb2..f8c51dc 100644 --- a/SQLiteStudio3/coreSQLiteStudio/dbobjectorganizer.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/dbobjectorganizer.cpp @@ -174,7 +174,7 @@ void DbObjectOrganizer::processPreparation() } } - if (referencedTables.size() > 0 && !confirmFunction(referencedTables.toList())) + if (referencedTables.size() > 0 && !execConfirmFunctionInMainThread(referencedTables.toList())) referencedTables.clear(); for (const QString& srcTable : referencedTables) @@ -370,8 +370,6 @@ bool DbObjectOrganizer::copyTableToDb(const QString& table) { QString ddl; QString targetTable = table; -// AttachGuard attach = srcDb->guardedAttach(dstDb, true); -// QString attachName = attach->getName(); if (renamed.contains(table) || !attachName.isNull()) { SqliteQueryPtr parsedObject = srcResolver->getParsedObject(table, SchemaResolver::TABLE); @@ -737,6 +735,21 @@ void DbObjectOrganizer::emitFinished(bool success) setExecuting(false); } +bool DbObjectOrganizer::execConfirmFunctionInMainThread(const QStringList& tables) +{ + bool res; + bool invokation = QMetaObject::invokeMethod(this, "confirmFunctionSlot", Qt::BlockingQueuedConnection, + Q_RETURN_ARG(bool, res), Q_ARG(QStringList, tables)); + + if (!invokation) + { + qCritical() << "Could not call DbObjectOrganizer::confirmFunctionSlot() between threads!"; + return false; + } + + return res; +} + void DbObjectOrganizer::processPreparationFinished() { if (errorsToConfirm.size() > 0 && !conversionErrorsConfimFunction(errorsToConfirm)) @@ -775,3 +788,8 @@ void DbObjectOrganizer::processPreparationFinished() QThreadPool::globalInstance()->start(this); } + +bool DbObjectOrganizer::confirmFunctionSlot(const QStringList& tables) +{ + return confirmFunction(tables); +} -- cgit v1.2.3