remove track from within slot in trackContainerView for not deleting object inside its own method - fixes Qt-warning

git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1075 0778d3d1-df1d-0410-868b-ea421aaaa00d
This commit is contained in:
Tobias Doerffel
2008-06-05 17:23:25 +00:00
parent 39534e923b
commit 112e932dd8
4 changed files with 25 additions and 5 deletions

View File

@@ -327,6 +327,10 @@ private:
friend class trackView;
signals:
void trackRemovalScheduled( trackView * _t );
} ;

View File

@@ -117,6 +117,7 @@ public:
public slots:
void realignTracks( void );
void createTrackView( track * _t );
void deleteTrackView( trackView * _tv );
protected:

View File

@@ -1115,6 +1115,12 @@ trackOperationsWidget::trackOperationsWidget( trackView * _parent ) :
SIGNAL( positionChanged( const midiTime & ) ),
this, SLOT( update() ) );
}
connect( this, SIGNAL( trackRemovalScheduled( trackView * ) ),
m_trackView->getTrackContainerView(),
SLOT( deleteTrackView( trackView * ) ),
Qt::QueuedConnection );
}
@@ -1216,11 +1222,7 @@ void trackOperationsWidget::cloneTrack( void )
void trackOperationsWidget::removeTrack( void )
{
m_trackView->close();
delete m_trackView;
engine::getMixer()->lock();
delete m_trackView->getTrack();
engine::getMixer()->unlock();
emit trackRemovalScheduled( m_trackView );
}

View File

@@ -216,6 +216,19 @@ void trackContainerView::createTrackView( track * _t )
void trackContainerView::deleteTrackView( trackView * _tv )
{
removeTrackView( _tv );
delete _tv;
engine::getMixer()->lock();
delete _tv->getTrack();
engine::getMixer()->unlock();
}
const trackView * trackContainerView::trackViewAt( const int _y ) const
{
const int abs_y = _y + m_scrollArea->viewport()->y();