fixed lockup and renamed constant

git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@449 0778d3d1-df1d-0410-868b-ea421aaaa00d
This commit is contained in:
Tobias Doerffel
2006-12-28 19:08:19 +00:00
parent 85bc1d5452
commit f68d4e4b62
12 changed files with 52 additions and 29 deletions

View File

@@ -331,7 +331,7 @@ void fileBrowser::openInNewInstrumentTrack( trackContainer * _tc )
if( m_contextMenuItem->type() == fileItem::SAMPLE_FILE )
{
instrumentTrack * ct = dynamic_cast<instrumentTrack *>(
track::create( track::CHANNEL_TRACK, _tc ) );
track::create( track::INSTRUMENT_TRACK, _tc ) );
#ifdef LMMS_DEBUG
assert( ct != NULL );
#endif
@@ -346,7 +346,7 @@ void fileBrowser::openInNewInstrumentTrack( trackContainer * _tc )
else if( m_contextMenuItem->type() == fileItem::PRESET_FILE )
{
multimediaProject mmp( m_contextMenuItem->fullName() );
track * t = track::create( track::CHANNEL_TRACK, _tc );
track * t = track::create( track::INSTRUMENT_TRACK, _tc );
instrumentTrack * ct = dynamic_cast<instrumentTrack *>( t );
if( ct != NULL )
{
@@ -418,7 +418,7 @@ void listView::contentsMouseDoubleClickEvent( QMouseEvent * _me )
// samples are per default opened in bb-editor because
// they're likely drum-samples etc.
instrumentTrack * it = dynamic_cast<instrumentTrack *>(
track::create( track::CHANNEL_TRACK,
track::create( track::INSTRUMENT_TRACK,
eng()->getBBEditor() ) );
#ifdef LMMS_DEBUG
assert( it != NULL );
@@ -436,7 +436,7 @@ void listView::contentsMouseDoubleClickEvent( QMouseEvent * _me )
{
// presets are per default opened in bb-editor
multimediaProject mmp( f->fullName() );
track * t = track::create( track::CHANNEL_TRACK,
track * t = track::create( track::INSTRUMENT_TRACK,
eng()->getBBEditor() );
instrumentTrack * it = dynamic_cast<instrumentTrack *>(
t );

View File

@@ -63,7 +63,7 @@ public:
{
setJournalling( FALSE );
m_previewInstrumentTrack = dynamic_cast<instrumentTrack *>(
track::create( track::CHANNEL_TRACK,
track::create( track::INSTRUMENT_TRACK,
this ) );
m_previewInstrumentTrack->setJournalling( FALSE );
hide();

View File

@@ -1470,11 +1470,11 @@ void songEditor::createNewProject( void )
eng()->getProjectJournal()->setJournalling( FALSE );
track * t;
t = track::create( track::CHANNEL_TRACK, this );
t = track::create( track::INSTRUMENT_TRACK, this );
dynamic_cast< instrumentTrack * >( t )->loadInstrument(
"tripleoscillator" );
track::create( track::SAMPLE_TRACK, this );
t = track::create( track::CHANNEL_TRACK, eng()->getBBEditor() );
t = track::create( track::INSTRUMENT_TRACK, eng()->getBBEditor() );
dynamic_cast< instrumentTrack * >( t )->loadInstrument(
"tripleoscillator" );
track::create( track::BB_TRACK, this );

View File

@@ -1659,7 +1659,7 @@ track * track::create( trackTypes _tt, trackContainer * _tc )
switch( _tt )
{
case CHANNEL_TRACK: t = new instrumentTrack( _tc ); break;
case INSTRUMENT_TRACK: t = new instrumentTrack( _tc ); break;
case BB_TRACK: t = new bbTrack( _tc ); break;
case SAMPLE_TRACK: t = new sampleTrack( _tc ); break;
// case EVENT_TRACK:

View File

@@ -495,7 +495,7 @@ void trackContainer::dragEnterEvent( QDragEnterEvent * _dee )
stringPairDrag::processDragEnterEvent( _dee,
QString( "presetfile,sampledata,samplefile,instrument,midifile,"
"track_%1,track_%2" ).
arg( track::CHANNEL_TRACK ).
arg( track::INSTRUMENT_TRACK ).
arg( track::SAMPLE_TRACK ) );
}
@@ -509,7 +509,7 @@ void trackContainer::dropEvent( QDropEvent * _de )
if( type == "instrument" )
{
instrumentTrack * it = dynamic_cast<instrumentTrack *>(
track::create( track::CHANNEL_TRACK,
track::create( track::INSTRUMENT_TRACK,
this ) );
it->loadInstrument( value );
it->toggledInstrumentTrackButton( TRUE );
@@ -518,7 +518,7 @@ void trackContainer::dropEvent( QDropEvent * _de )
else if( type == "sampledata" || type == "samplefile" )
{
instrumentTrack * it = dynamic_cast<instrumentTrack *>(
track::create( track::CHANNEL_TRACK,
track::create( track::INSTRUMENT_TRACK,
this ) );
instrument * i = it->loadInstrument( "audiofileprocessor" );
i->setParameter( type, value );
@@ -529,7 +529,7 @@ void trackContainer::dropEvent( QDropEvent * _de )
{
multimediaProject mmp( value );
instrumentTrack * it = dynamic_cast<instrumentTrack *>(
track::create( track::CHANNEL_TRACK,
track::create( track::INSTRUMENT_TRACK,
this ) );
it->loadTrackSpecificSettings( mmp.content().firstChild().
toElement() );

View File

@@ -106,8 +106,7 @@ const char * surroundarea_help = QT_TRANSLATE_NOOP( "instrumentTrack",
"feature." );
const int CHANNEL_WIDTH = 250;
const int INSTRUMENT_WIDTH = CHANNEL_WIDTH;
const int INSTRUMENT_WIDTH = 250;
const int INSTRUMENT_HEIGHT = INSTRUMENT_WIDTH;
const int PIANO_HEIGHT = 84;
@@ -116,7 +115,7 @@ instrumentTrack::instrumentTrack( trackContainer * _tc ) :
QWidget( _tc->eng()->getMainWindow()->workspace() ),
track( _tc ),
midiEventProcessor(),
m_trackType( CHANNEL_TRACK ),
m_trackType( INSTRUMENT_TRACK ),
m_midiPort( eng()->getMixer()->getMIDIClient()->addPort( this,
tr( "unnamed_channel" ) ) ),
m_audioPort( new audioPort( tr( "unnamed_channel" ), eng() ) ),
@@ -314,7 +313,7 @@ instrumentTrack::instrumentTrack( trackContainer * _tc ) :
// setup piano-widget
m_pianoWidget = new pianoWidget( this );
m_pianoWidget->setFixedSize( CHANNEL_WIDTH, PIANO_HEIGHT );
m_pianoWidget->setFixedSize( INSTRUMENT_WIDTH, PIANO_HEIGHT );
vlayout->addWidget( m_generalSettingsWidget );
@@ -380,7 +379,7 @@ instrumentTrack::instrumentTrack( trackContainer * _tc ) :
_tc->updateAfterTrackAdd();
#ifndef QT3
setFixedWidth( CHANNEL_WIDTH );
setFixedWidth( INSTRUMENT_WIDTH );
resize( sizeHint() );
#endif
@@ -653,9 +652,17 @@ void instrumentTrack::processInEvent( const midiEvent & _me,
_time.frames(
eng()->framesPerTact64th() ),
valueRanges<f_cnt_t>::max, n );
// as mixer::addPlayHandle() might
// delete note (when running into
// critical XRuns) which will call
// deleteNotePluginData which locks
// this mutex, we have to unlock
// it here temporarily
m_notesMutex.unlock();
if( eng()->getMixer()->addPlayHandle(
nph ) )
{
m_notesMutex.lock();
m_notes[_me.key()] = nph;
}
}
@@ -1299,7 +1306,7 @@ void instrumentTrack::invalidateAllMyNPH( void )
// invalidate all note-play-handles linked to this channel
eng()->getMixer()->checkValidityOfPlayHandles();
m_trackType = CHANNEL_TRACK;
m_trackType = INSTRUMENT_TRACK;
}