Crash fix for moving reticle via script.

sendMessage is not thread-safe, use invokeMethod to call into application thread instead.
This commit is contained in:
Anthony J. Thibault 2016-03-07 18:33:09 -08:00
parent 0d62b10a8f
commit 3d71226f72
3 changed files with 5 additions and 5 deletions

View file

@ -2173,9 +2173,9 @@ void Application::maybeToggleMenuVisible(QMouseEvent* event) {
}
/// called by ApplicationCompositor when in HMD mode and we're faking our mouse movement
void Application::fakeMouseEvent(QMouseEvent* event) {
void Application::fakeMouseEvent(QMouseEvent event) {
_fakedMouseEvent = true;
sendEvent(_glWidget, event);
sendEvent(_glWidget, &event);
_fakedMouseEvent = false;
}

View file

@ -221,8 +221,6 @@ public:
float getAverageSimsPerSecond();
void fakeMouseEvent(QMouseEvent* event);
signals:
void svoImportRequested(const QString& url);
@ -283,6 +281,8 @@ public slots:
void runTests();
void fakeMouseEvent(QMouseEvent event);
private slots:
void showDesktop();
void clearDomainOctreeDetails();

View file

@ -457,7 +457,7 @@ void ApplicationCompositor::setReticlePosition(glm::vec2 position, bool sendFake
auto buttons = QApplication::mouseButtons();
auto modifiers = QApplication::keyboardModifiers();
QMouseEvent event(QEvent::MouseMove, globalPos, button, buttons, modifiers);
qApp->fakeMouseEvent(&event);
QMetaObject::invokeMethod(qApp, "fakeMouseEvent", Qt::AutoConnection, Q_ARG(QMouseEvent, event));
}
} else {
// NOTE: This is some debugging code we will leave in while debugging various reticle movement strategies,