From fd203c3f7b8d2d7126c7dda51e47761d13de4972 Mon Sep 17 00:00:00 2001 From: Cyp Date: Wed, 30 Oct 2019 10:37:50 +0100 Subject: [PATCH] Fix crash due to calling QWidget::move from a non-GUI thread while exporting tracks. Calling via QMetaObject::invokeMethod should be thread safe. Crash callstack: QWidget::move SongEditor::updatePosition Song::stop Song::stopExport ProjectRenderer::run QThreadPrivate::start --- src/core/Song.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/Song.cpp b/src/core/Song.cpp index 6bd94a484..54f19e1d3 100644 --- a/src/core/Song.cpp +++ b/src/core/Song.cpp @@ -685,7 +685,7 @@ void Song::stop() if( gui && gui->songEditor() && ( tl->autoScroll() == TimeLineWidget::AutoScrollEnabled ) ) { - gui->songEditor()->m_editor->updatePosition(0); + QMetaObject::invokeMethod(gui->songEditor()->m_editor, "updatePosition", Qt::AutoConnection, Q_ARG(MidiTime, 0)); } break; @@ -699,7 +699,7 @@ void Song::stop() if( gui && gui->songEditor() && ( tl->autoScroll() == TimeLineWidget::AutoScrollEnabled ) ) { - gui->songEditor()->m_editor->updatePosition( MidiTime(tl->savedPos().getTicks() ) ); + QMetaObject::invokeMethod(gui->songEditor()->m_editor, "updatePosition", Qt::AutoConnection, Q_ARG(MidiTime, tl->savedPos().getTicks())); } tl->savePos( -1 ); }