* set hand-cursor for instrument-track-window button
* in instrumentTrack::processInEvent() lock mixer in outer branch git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1282 0778d3d1-df1d-0410-868b-ea421aaaa00d
This commit is contained in:
24
ChangeLog
24
ChangeLog
@@ -1,5 +1,29 @@
|
||||
2008-07-05 Tobias Doerffel <tobydox/at/users/dot/sourceforge/dot/net>
|
||||
|
||||
* include/instrument_track.h:
|
||||
* src/tracks/instrument_track.cpp:
|
||||
- set hand-cursor for instrument-track-window button
|
||||
- in instrumentTrack::processInEvent() lock mixer in outer branch
|
||||
|
||||
* include/instrument.h:
|
||||
added note for scheduled removal of monophonic-property
|
||||
|
||||
* include/note_play_handle.h:
|
||||
made m_released volatile
|
||||
|
||||
* src/core/note_play_handle.cpp:
|
||||
- instantly exit noteOff() if already released
|
||||
- manually unlink references to itself in instrumentTrack (fixes
|
||||
segfaults in various situations)
|
||||
|
||||
* src/core/envelope_and_lfo_parameters.cpp:
|
||||
* src/core/instrument_functions.cpp:
|
||||
* src/core/ladspa_control.cpp:
|
||||
fixed tempo-sync-models (closes #2010776)
|
||||
|
||||
* src/core/mixer.cpp:
|
||||
cleanups
|
||||
|
||||
* src/tracks/automation_track.cpp:
|
||||
made muting automation-tracks work (closes #2010770)
|
||||
|
||||
|
||||
@@ -319,7 +319,7 @@ private:
|
||||
|
||||
// widgets on the top of an instrument-track-window
|
||||
tabWidget * m_generalSettingsWidget;
|
||||
QLineEdit * m_instrumentNameLE;
|
||||
QLineEdit * m_nameLineEdit;
|
||||
knob * m_volumeKnob;
|
||||
knob * m_panningKnob;
|
||||
knob * m_pitchKnob;
|
||||
|
||||
@@ -246,6 +246,10 @@ void instrumentTrack::processInEvent( const midiEvent & _me,
|
||||
|
||||
case MidiNoteOff:
|
||||
{
|
||||
if( _lock ) // TO BE REMOVED
|
||||
{
|
||||
engine::getMixer()->lock();
|
||||
}
|
||||
notePlayHandle * n = m_notes[_me.key()];
|
||||
if( n != NULL )
|
||||
{
|
||||
@@ -255,24 +259,21 @@ void instrumentTrack::processInEvent( const midiEvent & _me,
|
||||
// this is for example needed by piano-roll for
|
||||
// recording notes into a pattern
|
||||
note done_note(
|
||||
midiTime( static_cast<f_cnt_t>(
|
||||
n->totalFramesPlayed() /
|
||||
engine::framesPerTick() ) ),
|
||||
midiTime( static_cast<f_cnt_t>(
|
||||
n->totalFramesPlayed() /
|
||||
engine::framesPerTick() ) ),
|
||||
0, n->key(),
|
||||
n->getVolume(), n->getPanning() );
|
||||
if( _lock )
|
||||
{
|
||||
// lock our play-handle while calling noteOff()
|
||||
// for not modifying it's member variables
|
||||
// asynchronously (while rendering!)
|
||||
// which can result in segfaults
|
||||
engine::getMixer()->lock();
|
||||
n->noteOff();
|
||||
engine::getMixer()->unlock();
|
||||
}
|
||||
|
||||
n->noteOff();
|
||||
m_notes[_me.key()] = NULL;
|
||||
|
||||
emit noteDone( done_note );
|
||||
}
|
||||
if( _lock ) // TO BE REMOVED
|
||||
{
|
||||
engine::getMixer()->unlock();
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -359,6 +360,7 @@ void instrumentTrack::playNote( notePlayHandle * _n, bool _try_parallelizing,
|
||||
|
||||
if( _n->arpBaseNote() == FALSE && m_instrument != NULL )
|
||||
{
|
||||
// TO BE REMOVED
|
||||
if( m_instrument->isMonophonic() )
|
||||
{
|
||||
constNotePlayHandleVector v =
|
||||
@@ -383,7 +385,8 @@ void instrumentTrack::playNote( notePlayHandle * _n, bool _try_parallelizing,
|
||||
!( *youngest_note )->arpBaseNote() &&
|
||||
!_n->released() )
|
||||
{
|
||||
processInEvent( midiEvent( MidiNoteOff, 0,
|
||||
processInEvent(midiEvent(
|
||||
MidiNoteOff, 0,
|
||||
_n->key(), 0 ), midiTime(),
|
||||
FALSE );
|
||||
if( ( *youngest_note )->offset() >
|
||||
@@ -1104,11 +1107,11 @@ instrumentTrackWindow::instrumentTrackWindow( instrumentTrackView * _itv ) :
|
||||
m_generalSettingsWidget->setFixedHeight( 90 );
|
||||
|
||||
// setup line-edit for changing channel-name
|
||||
m_instrumentNameLE = new QLineEdit( m_generalSettingsWidget );
|
||||
m_instrumentNameLE->setFont( pointSize<8>(
|
||||
m_instrumentNameLE->font() ) );
|
||||
m_instrumentNameLE->setGeometry( 10, 16, 230, 18 );
|
||||
connect( m_instrumentNameLE, SIGNAL( textChanged( const QString & ) ),
|
||||
m_nameLineEdit = new QLineEdit( m_generalSettingsWidget );
|
||||
m_nameLineEdit->setFont( pointSize<8>(
|
||||
m_nameLineEdit->font() ) );
|
||||
m_nameLineEdit->setGeometry( 10, 16, 230, 18 );
|
||||
connect( m_nameLineEdit, SIGNAL( textChanged( const QString & ) ),
|
||||
this, SLOT( textChanged( const QString & ) ) );
|
||||
|
||||
|
||||
@@ -1240,7 +1243,7 @@ void instrumentTrackWindow::modelChanged( void )
|
||||
{
|
||||
m_track = castModel<instrumentTrack>();
|
||||
|
||||
m_instrumentNameLE->setText( m_track->name() );
|
||||
m_nameLineEdit->setText( m_track->name() );
|
||||
|
||||
disconnect( m_track, SIGNAL( nameChanged() ) );
|
||||
disconnect( m_track, SIGNAL( instrumentChanged() ) );
|
||||
@@ -1308,9 +1311,9 @@ void instrumentTrackWindow::updateName( void )
|
||||
{
|
||||
setWindowTitle( m_track->name() );
|
||||
|
||||
if( m_instrumentNameLE->text() != m_track->name() )
|
||||
if( m_nameLineEdit->text() != m_track->name() )
|
||||
{
|
||||
m_instrumentNameLE->setText( m_track->name() );
|
||||
m_nameLineEdit->setText( m_track->name() );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1466,6 +1469,7 @@ instrumentTrackButton::instrumentTrackButton( instrumentTrackView * _itv ) :
|
||||
m_instrumentTrackView( _itv )
|
||||
{
|
||||
setAcceptDrops( TRUE );
|
||||
setCursor( QCursor( embed::getIconPixmap( "hand" ), 0, 0 ) );
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user