GUI: fix per-chan osc visual glitch when stopping
This commit is contained in:
parent
eb63d62181
commit
4e55368787
3 changed files with 34 additions and 4 deletions
|
|
@ -1076,10 +1076,6 @@ void FurnaceGUI::stop() {
|
|||
e->stop();
|
||||
curNibble=false;
|
||||
orderNibble=false;
|
||||
activeNotes.clear();
|
||||
memset(chanOscVol,0,DIV_MAX_CHANS*sizeof(float));
|
||||
memset(chanOscPitch,0,DIV_MAX_CHANS*sizeof(float));
|
||||
memset(chanOscBright,0,DIV_MAX_CHANS*sizeof(float));
|
||||
}
|
||||
|
||||
void FurnaceGUI::previewNote(int refChan, int note, bool autoNote) {
|
||||
|
|
@ -3573,6 +3569,21 @@ bool FurnaceGUI::loop() {
|
|||
}
|
||||
}
|
||||
|
||||
if (!e->isRunning()) {
|
||||
activeNotes.clear();
|
||||
memset(chanOscVol,0,DIV_MAX_CHANS*sizeof(float));
|
||||
memset(chanOscPitch,0,DIV_MAX_CHANS*sizeof(float));
|
||||
memset(chanOscBright,0,DIV_MAX_CHANS*sizeof(float));
|
||||
|
||||
e->synchronized([this]() {
|
||||
for (int i=0; i<e->getTotalChannelCount(); i++) {
|
||||
DivDispatchOscBuffer* buf=e->getOscBuffer(i);
|
||||
buf->needle=0;
|
||||
buf->readNeedle=0;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
layoutTimeBegin=SDL_GetPerformanceCounter();
|
||||
|
||||
ImGui_ImplSDLRenderer_NewFrame();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue