Prevent app from being stuck when start bar selected

This commit is contained in:
Martchus 2023-09-10 14:47:03 +02:00
parent 71f64b391e
commit 81069a98b2
3 changed files with 9 additions and 3 deletions

View File

@ -100,6 +100,7 @@ public:
}
bool seekingBarNumber() { return m_seekingBarNumber;}
void doneSeekingBarNumber() { m_seekingBarNumber = false; }
// get and reset the current bar event bits
eventBits_t readEventBits() {

View File

@ -223,6 +223,7 @@ protected:
bool validatePianistChord();
bool seekingBarNumber() { return m_bar.seekingBarNumber();}
void doneSeekingBarNumber() { m_bar.doneSeekingBarNumber(); }
int track2Channel(int track) {return m_track2ChannelLookUp[track];}

View File

@ -163,10 +163,10 @@ eventBits_t CSong::task(qint64 ticks)
{
realTimeEngine(ticks);
while (!m_reachedMidiEof)
for (auto scoreHasEnoughSpace = true; !m_reachedMidiEof && scoreHasEnoughSpace;)
{
// loop as long as there is space and that the score also has space
while (midiEventSpace() > 10 && chordEventSpace() > 10 && m_scoreWin->midiEventSpace() > 100)
while (midiEventSpace() > 10 && chordEventSpace() > 10 && (scoreHasEnoughSpace = m_scoreWin->midiEventSpace() > 100))
{
// Read the next events
CMidiEvent event = m_midiFile->readMidiEvent();
@ -198,7 +198,11 @@ eventBits_t CSong::task(qint64 ticks)
m_scoreWin->drawScrollingSymbols(false); // don't display any thing just remove from the queue
}
eventBits_t eventBits = m_realTimeEventBits;
// unset the seeking state (noop if not seeking anyways)
doneSeekingBarNumber();
// return and unset event bits
const auto eventBits = m_realTimeEventBits;
m_realTimeEventBits = 0;
return eventBits;
}