From 1a9cd59339d964a690da9b13c96dcb01219b86dd Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Mon, 28 Sep 2015 15:03:29 -0700 Subject: [PATCH] Fix ClipboardScriptingInterface to call methods on main app thread --- .../scripting/ClipboardScriptingInterface.cpp | 31 ++++++++++++++++--- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/interface/src/scripting/ClipboardScriptingInterface.cpp b/interface/src/scripting/ClipboardScriptingInterface.cpp index f833ad43cc..4cebb85648 100644 --- a/interface/src/scripting/ClipboardScriptingInterface.cpp +++ b/interface/src/scripting/ClipboardScriptingInterface.cpp @@ -19,17 +19,40 @@ float ClipboardScriptingInterface::getClipboardContentsLargestDimension() { } bool ClipboardScriptingInterface::exportEntities(const QString& filename, const QVector& entityIDs) { - return Application::getInstance()->exportEntities(filename, entityIDs); + bool retVal; + QMetaObject::invokeMethod(Application::getInstance(), "exportEntities", Qt::BlockingQueuedConnection, + Q_RETURN_ARG(bool, retVal), + Q_ARG(const QString&, filename), + Q_ARG(const QVector&, entityIDs)); + return retVal; } bool ClipboardScriptingInterface::exportEntities(const QString& filename, float x, float y, float z, float s) { - return Application::getInstance()->exportEntities(filename, x, y, z, s); + bool retVal; + QMetaObject::invokeMethod(Application::getInstance(), "exportEntities", Qt::BlockingQueuedConnection, + Q_RETURN_ARG(bool, retVal), + Q_ARG(const QString&, filename), + Q_ARG(float, x), + Q_ARG(float, y), + Q_ARG(float, z), + Q_ARG(float, s)); + return retVal; } bool ClipboardScriptingInterface::importEntities(const QString& filename) { - return Application::getInstance()->importEntities(filename); + bool retVal; + QMetaObject::invokeMethod(Application::getInstance(), "importEntities", Qt::BlockingQueuedConnection, + Q_RETURN_ARG(bool, retVal), + Q_ARG(const QString&, filename)); + return retVal; } QVector ClipboardScriptingInterface::pasteEntities(glm::vec3 position) { - return Application::getInstance()->pasteEntities(position.x, position.y, position.z); + QVector retVal; + QMetaObject::invokeMethod(Application::getInstance(), "pasteEntities", Qt::BlockingQueuedConnection, + Q_RETURN_ARG(QVector, retVal), + Q_ARG(float, position.x), + Q_ARG(float, position.y), + Q_ARG(float, position.z)); + return retVal; }