diff --git a/ChangeLog b/ChangeLog index d996ca19..82c74de7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -24559,3 +24559,6 @@ CAE command. 2023-12-15 Fred Gleason * Cleaned up warnings about unprocessed CAE commands in the syslog. +2023-12-15 Fred Gleason + * Fixed a race in the log machine logic that could cause truncated + play-outs with segue transitions. diff --git a/lib/rdcae.cpp b/lib/rdcae.cpp index f6733a2d..2dd4c94f 100644 --- a/lib/rdcae.cpp +++ b/lib/rdcae.cpp @@ -287,6 +287,7 @@ void RDCae::play(unsigned serial,unsigned length,int speed,bool pitch) if(pitch) { pitch_state=1; } + //printf(" play: %s\n",QTime::currentTime().toString("hh:mm:ss.zzz").toUtf8().constData()); SendCommand(QString().sprintf("PY %u %u %d %d!", serial,length,speed,pitch_state)); } diff --git a/lib/rdlogplay.cpp b/lib/rdlogplay.cpp index 09027990..ec76f7a6 100644 --- a/lib/rdlogplay.cpp +++ b/lib/rdlogplay.cpp @@ -1520,7 +1520,7 @@ void RDLogPlay::graceTimerData() void RDLogPlay::playStateChangedData(int id,RDPlayDeck::State state) { #ifdef SHOW_SLOTS - printf("playStateChangedData(%d,%d), log: %s\n",id,state,(const char *)logName()); + printf("playStateChangedData(%d,%d), log: %s\n",id,state,logName().toUtf8().constData()); #endif switch(state) { case RDPlayDeck::Playing: diff --git a/lib/rdplay_deck.cpp b/lib/rdplay_deck.cpp index e72ac02e..5247ba25 100644 --- a/lib/rdplay_deck.cpp +++ b/lib/rdplay_deck.cpp @@ -666,12 +666,14 @@ void RDPlayDeck::pointTimerData(int point) case RDPlayDeck::Segue: if(play_point_state[point]) { play_point_state[point]=false; + //printf(" segueEnd: %s\n",QTime::currentTime().toString("hh:mm:ss.zzz").toUtf8().constData()); emit segueEnd(play_id); } else { play_point_state[point]=true; play_point_timer[point]-> start(play_point_value[point][1]-play_point_value[point][0]); + //printf("segueStart: %s\n",QTime::currentTime().toString("hh:mm:ss.zzz").toUtf8().constData()); emit segueStart(play_id); } break; @@ -767,7 +769,8 @@ void RDPlayDeck::StartTimers(int offset) for(int i=0;i