From 6680395e97864ffce1596120a3627ecd7eb21e8b Mon Sep 17 00:00:00 2001 From: David Rowe Date: Wed, 14 Dec 2016 14:30:02 +1300 Subject: [PATCH] Add scriptEvent message to web3d overlay event bridge --- interface/src/ui/overlays/Web3DOverlay.cpp | 11 +++++++++++ interface/src/ui/overlays/Web3DOverlay.h | 5 +++++ 2 files changed, 16 insertions(+) diff --git a/interface/src/ui/overlays/Web3DOverlay.cpp b/interface/src/ui/overlays/Web3DOverlay.cpp index da7c67755a..bb76a6bb09 100644 --- a/interface/src/ui/overlays/Web3DOverlay.cpp +++ b/interface/src/ui/overlays/Web3DOverlay.cpp @@ -69,6 +69,8 @@ Web3DOverlay::~Web3DOverlay() { QObject::disconnect(_hoverLeaveConnection); _hoverLeaveConnection = QMetaObject::Connection(); + QObject::disconnect(_emitScriptEventConnection); + _emitScriptEventConnection = QMetaObject::Connection(); QObject::disconnect(_webEventReceivedConnection); _webEventReceivedConnection = QMetaObject::Connection(); @@ -153,6 +155,7 @@ void Web3DOverlay::render(RenderArgs* args) { } }); + _emitScriptEventConnection = connect(this, &Web3DOverlay::scriptEventReceived, _webSurface.data(), &OffscreenQmlSurface::emitScriptEvent); _webEventReceivedConnection = connect(_webSurface.data(), &OffscreenQmlSurface::webEventReceived, this, &Web3DOverlay::webEventReceived); } @@ -355,3 +358,11 @@ bool Web3DOverlay::findRayIntersection(const glm::vec3& origin, const glm::vec3& Web3DOverlay* Web3DOverlay::createClone() const { return new Web3DOverlay(this); } + +void Web3DOverlay::emitScriptEvent(const QVariant& message) { + if (QThread::currentThread() != thread()) { + QMetaObject::invokeMethod(this, "emitScriptEvent", Qt::QueuedConnection, Q_ARG(QVariant, message)); + } else { + emit scriptEventReceived(message); + } +} diff --git a/interface/src/ui/overlays/Web3DOverlay.h b/interface/src/ui/overlays/Web3DOverlay.h index b9ad69dbb9..45ec9fbc50 100644 --- a/interface/src/ui/overlays/Web3DOverlay.h +++ b/interface/src/ui/overlays/Web3DOverlay.h @@ -51,7 +51,11 @@ public: virtual Web3DOverlay* createClone() const override; +public slots: + void emitScriptEvent(const QVariant& scriptMessage); + signals: + void scriptEventReceived(const QVariant& message); void webEventReceived(const QVariant& message); private: @@ -72,6 +76,7 @@ private: QMetaObject::Connection _mouseMoveConnection; QMetaObject::Connection _hoverLeaveConnection; + QMetaObject::Connection _emitScriptEventConnection; QMetaObject::Connection _webEventReceivedConnection; };