Avoid using `goto` and other cumbersome code in `CSong::task()`
This commit is contained in:
parent
bd787d5ae5
commit
71f64b391e
29
src/Song.cpp
29
src/Song.cpp
|
@ -163,28 +163,18 @@ eventBits_t CSong::task(qint64 ticks)
|
||||||
{
|
{
|
||||||
realTimeEngine(ticks);
|
realTimeEngine(ticks);
|
||||||
|
|
||||||
while (true)
|
while (!m_reachedMidiEof)
|
||||||
{
|
{
|
||||||
if (m_reachedMidiEof == true)
|
// loop as long as there is space and that the score also has space
|
||||||
goto exitTask;
|
while (midiEventSpace() > 10 && chordEventSpace() > 10 && m_scoreWin->midiEventSpace() > 100)
|
||||||
|
|
||||||
while (true)
|
|
||||||
{
|
{
|
||||||
// Check that there is space
|
|
||||||
if (midiEventSpace() <= 10 || chordEventSpace() <= 10)
|
|
||||||
break;
|
|
||||||
|
|
||||||
// and that the Score has space also
|
|
||||||
if (m_scoreWin->midiEventSpace() <= 100)
|
|
||||||
break;
|
|
||||||
|
|
||||||
// Read the next events
|
// Read the next events
|
||||||
CMidiEvent event = m_midiFile->readMidiEvent();
|
CMidiEvent event = m_midiFile->readMidiEvent();
|
||||||
|
|
||||||
//ppLogTrace("Song event delta %d type 0x%x chan %d Note %d", event.deltaTime(), event.type(), event.channel(), event.note());
|
//ppLogTrace("Song event delta %d type 0x%x chan %d Note %d", event.deltaTime(), event.type(), event.channel(), event.note());
|
||||||
|
|
||||||
// Find the next chord
|
// Find the next chord
|
||||||
if (m_findChord.findChord(event, getActiveChannel(), PB_PART_both) == true)
|
if (m_findChord.findChord(event, getActiveChannel(), PB_PART_both))
|
||||||
chordEventInsert( m_findChord.getChord() ); // give the Conductor the chord event
|
chordEventInsert( m_findChord.getChord() ); // give the Conductor the chord event
|
||||||
|
|
||||||
// send the events to the other end
|
// send the events to the other end
|
||||||
|
@ -201,16 +191,13 @@ eventBits_t CSong::task(qint64 ticks)
|
||||||
}
|
}
|
||||||
|
|
||||||
// carry on with the data until we reach the bar we want
|
// carry on with the data until we reach the bar we want
|
||||||
if (seekingBarNumber() && m_reachedMidiEof == false && playingMusic())
|
if (!seekingBarNumber() || m_reachedMidiEof || !playingMusic())
|
||||||
{
|
|
||||||
realTimeEngine(0);
|
|
||||||
m_scoreWin->drawScrollingSymbols(false); // don't display any thing just remove from the queue
|
|
||||||
}
|
|
||||||
else
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
realTimeEngine(0);
|
||||||
|
m_scoreWin->drawScrollingSymbols(false); // don't display any thing just remove from the queue
|
||||||
}
|
}
|
||||||
|
|
||||||
exitTask:
|
|
||||||
eventBits_t eventBits = m_realTimeEventBits;
|
eventBits_t eventBits = m_realTimeEventBits;
|
||||||
m_realTimeEventBits = 0;
|
m_realTimeEventBits = 0;
|
||||||
return eventBits;
|
return eventBits;
|
||||||
|
|
Loading…
Reference in New Issue