diff --git a/src/gui/chanOsc.cpp b/src/gui/chanOsc.cpp index b298f3dd1..325d4c746 100644 --- a/src/gui/chanOsc.cpp +++ b/src/gui/chanOsc.cpp @@ -87,10 +87,6 @@ float FurnaceGUI::computeGradPos(int type, int chan, int totalChans) { } void FurnaceGUI::calcChanOsc() { - std::vector oscBufs; - std::vector oscFFTs; - std::vector oscChans; - int chans=e->getTotalChannelCount(); for (int i=0; i oscBufs; - std::vector oscFFTs; - std::vector oscChans; + struct OscData { + DivDispatchOscBuffer* buf; + ChanOscStatus* fft; + int chan; + }; + std::vector oscData; int chans=e->getTotalChannelCount(); ImGuiWindow* window=ImGui::GetCurrentWindow(); @@ -438,18 +437,16 @@ void FurnaceGUI::drawChanOsc() { for (int i=0; igetOscBuffer(i); if (buf!=NULL && e->curSubSong->chanShowChanOsc[i]) { - oscBufs.push_back(buf); // isnt this odd how there are 3 vectors of the same size? - oscFFTs.push_back(&chanOscChan[i]); - oscChans.push_back(i); + oscData.push_back({buf,&chanOscChan[i],i}); } } // process - for (size_t i=0; irelatedBuf=oscBufs[i]; - fft_->relatedCh=oscChans[i]; + fft_->relatedBuf=oscData[i].buf; + fft_->relatedCh=oscData[i].chan; if (fft_->relatedBuf!=NULL) { // prepare @@ -610,19 +607,19 @@ void FurnaceGUI::drawChanOsc() { chanOscWorkPool->wait(); if (chanOscAutoCols) { - chanOscCols=sqrt(oscBufs.size()); + chanOscCols=sqrt(oscData.size()); if (chanOscCols>64) chanOscCols=64; } - int rows=(oscBufs.size()+(chanOscCols-1))/chanOscCols; + int rows=(oscData.size()+(chanOscCols-1))/chanOscCols; // render - for (size_t i=0; i