From d68f8d73027d2b320ccd4f3a6ddb132ffc4e0905 Mon Sep 17 00:00:00 2001 From: Dave French Date: Sat, 27 Dec 2014 17:47:31 +0000 Subject: [PATCH] Proposed fix for 1352 Instrument crash on loading --- include/TrackContainerView.h | 18 ++++++++++++++++++ src/gui/TrackContainerView.cpp | 19 ++++++++++++++++++- 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/include/TrackContainerView.h b/include/TrackContainerView.h index 2745f86a4..5201a92c6 100644 --- a/include/TrackContainerView.h +++ b/include/TrackContainerView.h @@ -33,6 +33,7 @@ #include "Track.h" #include "JournallingObject.h" +#include "InstrumentTrack.h" class QVBoxLayout; @@ -182,6 +183,23 @@ signals: } ; +class InstrumentLoaderThread : public QThread +{ + Q_OBJECT +public: + InstrumentLoaderThread( QObject *parent = 0 , InstrumentTrack *it = 0, QString name = "" ); + + void run(); + + +private: + + InstrumentTrack *m_it; + QString m_name; + + + +}; #endif diff --git a/src/gui/TrackContainerView.cpp b/src/gui/TrackContainerView.cpp index 94c72d278..5d9d66013 100644 --- a/src/gui/TrackContainerView.cpp +++ b/src/gui/TrackContainerView.cpp @@ -47,6 +47,9 @@ #include "Track.h" + + + TrackContainerView::TrackContainerView( TrackContainer * _tc ) : QWidget(), ModelView( NULL, this ), @@ -325,7 +328,8 @@ void TrackContainerView::dropEvent( QDropEvent * _de ) InstrumentTrack * it = dynamic_cast( Track::create( Track::InstrumentTrack, m_tc ) ); - it->loadInstrument( value ); + InstrumentLoaderThread *ilt = new InstrumentLoaderThread( this, it, value); + ilt->start(); //it->toggledInstrumentTrackButton( true ); _de->accept(); } @@ -450,6 +454,19 @@ void TrackContainerView::scrollArea::wheelEvent( QWheelEvent * _we ) } } + InstrumentLoaderThread::InstrumentLoaderThread( QObject *parent, InstrumentTrack *it, QString name) : QThread( parent ) +{ + m_it = it; + m_name = name; +} + +void InstrumentLoaderThread::run() +{ + m_it->loadInstrument( m_name ); +} + + +