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
This commit is contained in:
Cyp
2019-10-30 10:37:50 +01:00
committed by Lukas W
parent 6c865c072d
commit fd203c3f7b

View File

@@ -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 );
}