From a58529a49b4dcd8728d5e73472476e99e5febf27 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 20 Sep 2022 02:57:56 -0500 Subject: [PATCH] GUI: fix some thread problems with keyHit --- src/gui/chanOsc.cpp | 2 +- src/gui/gui.cpp | 9 +++------ src/gui/pattern.cpp | 3 +++ 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/gui/chanOsc.cpp b/src/gui/chanOsc.cpp index 08174b0b6..89b89801b 100644 --- a/src/gui/chanOsc.cpp +++ b/src/gui/chanOsc.cpp @@ -63,7 +63,7 @@ float FurnaceGUI::computeGradPos(int type, int chan) { return chanOscBright[chan]; break; case GUI_OSCREF_NOTE_TRIGGER: - return keyHit[chan]*5.0f; + return keyHit1[chan]; break; } return 0.0f; diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index d42ec0f88..a2eb9c920 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -3548,12 +3548,6 @@ bool FurnaceGUI::loop() { drawEffectList(); } - for (int i=0; igetTotalChannelCount(); i++) { - if (e->keyHit[i]) { - e->keyHit[i]=false; - } - } - if (inspectorOpen) ImGui::ShowMetricsWindow(&inspectorOpen); if (firstFrame) { @@ -5462,6 +5456,9 @@ FurnaceGUI::FurnaceGUI(): waveGenFMCon2[0]=true; waveGenFMCon3[0]=true; + memset(keyHit,0,sizeof(float)*DIV_MAX_CHANS); + memset(keyHit1,0,sizeof(float)*DIV_MAX_CHANS); + memset(pianoKeyHit,0,sizeof(float)*180); memset(pianoKeyPressed,0,sizeof(bool)*180); diff --git a/src/gui/pattern.cpp b/src/gui/pattern.cpp index f35f828c0..add285f64 100644 --- a/src/gui/pattern.cpp +++ b/src/gui/pattern.cpp @@ -477,6 +477,7 @@ void FurnaceGUI::drawPattern() { ImVec4 chanHeadBase=chanHead; if (e->keyHit[i]) { + keyHit1[i]=1.0f; if (settings.channelFeedbackStyle==1) { keyHit[i]=0.2; if (!muted) { @@ -486,6 +487,7 @@ void FurnaceGUI::drawPattern() { } } } + e->keyHit[i]=false; } if (settings.channelFeedbackStyle==2 && e->isRunning()) { float amount=((float)(e->getChanState(i)->volume>>8)/(float)e->getMaxVolumeChan(i)); @@ -699,6 +701,7 @@ void FurnaceGUI::drawPattern() { if (e->keyHit[i]) { keyHit1[i]=1.0f; + e->keyHit[i]=false; } if (e->isRunning()) {