From 439544e3a0122a1fcfeb896822ff2491e47d0a1d Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 13 Jan 2026 04:23:24 -0500 Subject: [PATCH] fix non-mono GLSL osc issue #2641 --- src/gui/osc.cpp | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/src/gui/osc.cpp b/src/gui/osc.cpp index 00680ac75..11816dc23 100644 --- a/src/gui/osc.cpp +++ b/src/gui/osc.cpp @@ -139,7 +139,7 @@ void FurnaceGUI::readOsc() { e->oscReadPos=readPos; } -PendingDrawOsc _do; +PendingDrawOsc _do[DIV_MAX_OUTPUTS]; static void _drawOsc(const ImDrawList* drawList, const ImDrawCmd* cmd) { if (cmd!=NULL) { @@ -302,15 +302,15 @@ void FurnaceGUI::drawOsc() { if ((oscWidth-24)>0) { if (settings.oscMono) { if (rend->supportsDrawOsc() && settings.shaderOsc) { - _do.gui=this; - _do.data=&oscValuesAverage[12]; - _do.len=oscWidth-24; - _do.pos0=inRect.Min; - _do.pos1=inRect.Max; - _do.color=isClipping?uiColors[GUI_COLOR_OSC_WAVE_PEAK]:uiColors[GUI_COLOR_OSC_WAVE]; - _do.lineSize=dpiScale*settings.oscLineSize; + _do[0].gui=this; + _do[0].data=&oscValuesAverage[12]; + _do[0].len=oscWidth-24; + _do[0].pos0=inRect.Min; + _do[0].pos1=inRect.Max; + _do[0].color=isClipping?uiColors[GUI_COLOR_OSC_WAVE_PEAK]:uiColors[GUI_COLOR_OSC_WAVE]; + _do[0].lineSize=dpiScale*settings.oscLineSize; - dl->AddCallback(_drawOsc,&_do); + dl->AddCallback(_drawOsc,&_do[0]); dl->AddCallback(ImDrawCallback_ResetRenderState,NULL); } else { for (int i=0; isupportsDrawOsc() && settings.shaderOsc) { - _do.gui=this; - _do.data=&oscValues[ch][12]; - _do.len=oscWidth-24; - _do.pos0=inRect.Min; - _do.pos1=inRect.Max; - _do.color=isClipping?uiColors[GUI_COLOR_OSC_WAVE_PEAK]:uiColors[GUI_COLOR_OSC_WAVE_CH0+ch]; - _do.lineSize=dpiScale*settings.oscLineSize; + _do[ch].gui=this; + _do[ch].data=&oscValues[ch][12]; + _do[ch].len=oscWidth-24; + _do[ch].pos0=inRect.Min; + _do[ch].pos1=inRect.Max; + _do[ch].color=isClipping?uiColors[GUI_COLOR_OSC_WAVE_PEAK]:uiColors[GUI_COLOR_OSC_WAVE_CH0+ch]; + _do[ch].lineSize=dpiScale*settings.oscLineSize; - dl->AddCallback(_drawOsc,&_do); + dl->AddCallback(_drawOsc,&_do[ch]); dl->AddCallback(ImDrawCallback_ResetRenderState,NULL); } else { for (int i=0; i