@@ -167,18 +167,15 @@ Audio_Region::Audio_Region ( Audio_File *c ) | |||||
log_create(); | log_create(); | ||||
} | } | ||||
/* used when DND importing */ | |||||
/* used when DND importing and when recording. must not invoke log_create() */ | |||||
Audio_Region::Audio_Region ( Audio_File *c, Sequence *t, nframes_t o ) | Audio_Region::Audio_Region ( Audio_File *c, Sequence *t, nframes_t o ) | ||||
{ | { | ||||
init(); | init(); | ||||
_clip = c; | _clip = c; | ||||
_sequence = t; | |||||
_r->offset = 0; | _r->offset = 0; | ||||
_r->start = o; | _r->start = o; | ||||
_r->length = _clip->length(); | _r->length = _clip->length(); | ||||
sequence()->add( this ); | |||||
int sum = 0; | int sum = 0; | ||||
const char *s = rindex( _clip->name(), '/' ); | const char *s = rindex( _clip->name(), '/' ); | ||||
if ( ! s ) | if ( ! s ) | ||||
@@ -192,7 +189,7 @@ Audio_Region::Audio_Region ( Audio_File *c, Sequence *t, nframes_t o ) | |||||
_box_color = (Fl_Color)sum; | _box_color = (Fl_Color)sum; | ||||
log_create(); | |||||
t->add( this ); | |||||
} | } | ||||
Audio_Region::~Audio_Region ( ) | Audio_Region::~Audio_Region ( ) | ||||
@@ -328,8 +328,10 @@ Audio_Sequence::handle ( int m ) | |||||
free( file ); | free( file ); | ||||
// Audio_Region *r = | |||||
Audio_Region *r = | |||||
new Audio_Region( c, this, timeline->xoffset + timeline->x_to_ts( Fl::event_x() - x() ) ); | new Audio_Region( c, this, timeline->xoffset + timeline->x_to_ts( Fl::event_x() - x() ) ); | ||||
r->log_create(); | |||||
redraw(); | redraw(); | ||||
@@ -109,12 +109,6 @@ Cursor_Point::set ( Log_Entry &e ) | |||||
void | |||||
Cursor_Point::log_children ( void ) const | |||||
{ | |||||
log_create(); | |||||
} | |||||
int | int | ||||
Cursor_Point::handle ( int m ) | Cursor_Point::handle ( int m ) | ||||
@@ -32,7 +32,6 @@ protected: | |||||
virtual void get ( Log_Entry &e ) const; | virtual void get ( Log_Entry &e ) const; | ||||
void set ( Log_Entry &e ); | void set ( Log_Entry &e ); | ||||
void log_children ( void ) const; | |||||
Cursor_Point ( ); | Cursor_Point ( ); | ||||
@@ -226,7 +226,7 @@ Audio_Region::prepare ( void ) | |||||
DMESSAGE( "Preparing capture region" ); | DMESSAGE( "Preparing capture region" ); | ||||
log_start(); | |||||
// log_start(); | |||||
} | } | ||||
/** write /nframes/ from /buf/ to source. /buf/ is interleaved and | /** write /nframes/ from /buf/ to source. /buf/ is interleaved and | ||||
@@ -267,7 +267,8 @@ Audio_Region::finalize ( nframes_t frame ) | |||||
_clip->close(); | _clip->close(); | ||||
_clip->open(); | _clip->open(); | ||||
log_end(); | |||||
log_create(); | |||||
// log_end(); | |||||
return true; | return true; | ||||
} | } |
@@ -273,7 +273,7 @@ Track::record ( Capture *c, nframes_t frame ) | |||||
/* open it again for reading in the GUI thread */ | /* open it again for reading in the GUI thread */ | ||||
// Audio_File *af = Audio_File::from_file( c->audio_file->name() ); | // Audio_File *af = Audio_File::from_file( c->audio_file->name() ); | ||||
/* must acquire the FLTK lock because adding a widget might interfere with drawing */ | /* must acquire the FLTK lock because adding a widget might interfere with drawing */ | ||||
Fl::lock(); | |||||
// Fl::lock(); | |||||
/* must acquire a write lock because the Audio_Region constructor | /* must acquire a write lock because the Audio_Region constructor | ||||
* will add the region to the specified sequence, which might affect playback */ | * will add the region to the specified sequence, which might affect playback */ | ||||
@@ -283,7 +283,7 @@ Track::record ( Capture *c, nframes_t frame ) | |||||
timeline->unlock(); | timeline->unlock(); | ||||
Fl::unlock(); | |||||
// Fl::unlock(); | |||||
c->region->prepare(); | c->region->prepare(); | ||||
} | } | ||||
@@ -188,7 +188,13 @@ Sequence::add ( Sequence_Widget *r ) | |||||
{ | { | ||||
// Logger _log( this ); | // Logger _log( this ); | ||||
if ( r->sequence() && r->sequence() != this ) | |||||
if ( r->sequence() == this ) | |||||
{ | |||||
WARNING( "Programming error: attempt to add sequence widget to the same sequence twice" ); | |||||
return; | |||||
} | |||||
if ( r->sequence() ) | |||||
{ | { | ||||
/* This method can be called from the Capture thread as well as the GUI thread, so we must lock FLTK before redraw */ | /* This method can be called from the Capture thread as well as the GUI thread, so we must lock FLTK before redraw */ | ||||
r->redraw(); | r->redraw(); | ||||
@@ -83,12 +83,6 @@ Tempo_Point::set ( Log_Entry &e ) | |||||
_make_label(); | _make_label(); | ||||
} | } | ||||
void | |||||
Tempo_Point::log_children ( void ) const | |||||
{ | |||||
log_create(); | |||||
} | |||||
int | int | ||||
Tempo_Point::handle ( int m ) | Tempo_Point::handle ( int m ) | ||||
{ | { | ||||
@@ -45,7 +45,6 @@ protected: | |||||
virtual void get ( Log_Entry &e ) const; | virtual void get ( Log_Entry &e ) const; | ||||
void set ( Log_Entry &e ); | void set ( Log_Entry &e ); | ||||
void log_children ( void ) const; | |||||
Tempo_Point ( ); | Tempo_Point ( ); | ||||
@@ -62,7 +62,11 @@ Tempo_Sequence::handle ( int m ) | |||||
if ( Tempo_Point::edit( &t ) ) | if ( Tempo_Point::edit( &t ) ) | ||||
{ | { | ||||
add( new Tempo_Point( timeline->x_to_offset( Fl::event_x() ), t ) ); | |||||
timeline->wrlock(); | |||||
new Tempo_Point( timeline->x_to_offset( Fl::event_x() ), t ); | |||||
timeline->unlock(); | |||||
timeline->redraw(); | timeline->redraw(); | ||||
} | } | ||||
@@ -93,12 +93,6 @@ Time_Point::set ( Log_Entry &e ) | |||||
_make_label(); | _make_label(); | ||||
} | } | ||||
void | |||||
Time_Point::log_children ( void ) const | |||||
{ | |||||
log_create(); | |||||
} | |||||
int | int | ||||
Time_Point::handle ( int m ) | Time_Point::handle ( int m ) | ||||
{ | { | ||||
@@ -58,7 +58,6 @@ protected: | |||||
virtual void get ( Log_Entry &e ) const; | virtual void get ( Log_Entry &e ) const; | ||||
void set ( Log_Entry &e ); | void set ( Log_Entry &e ); | ||||
void log_children ( void ) const; | |||||
Time_Point ( ); | Time_Point ( ); | ||||
@@ -65,7 +65,11 @@ Time_Sequence::handle ( int m ) | |||||
if ( Time_Point::edit( &t ) ) | if ( Time_Point::edit( &t ) ) | ||||
{ | { | ||||
add( new Time_Point( timeline->x_to_offset( Fl::event_x() ), t.beats_per_bar, t.beat_type ) ); | |||||
timeline->wrlock(); | |||||
new Time_Point( timeline->x_to_offset( Fl::event_x() ), t.beats_per_bar, t.beat_type ); | |||||
timeline->unlock(); | |||||
timeline->redraw(); | timeline->redraw(); | ||||
} | } | ||||