GUI: new osc renderer, part 2 - warning

why does it crash...
This commit is contained in:
tildearrow 2024-02-09 19:20:09 -05:00
parent 5ec7c4a541
commit e41e8ed962
6 changed files with 83 additions and 29 deletions

View file

@ -1435,7 +1435,7 @@ class FurnaceGUIRender {
virtual void destroyFontsTexture();
virtual void renderGUI();
virtual void wipe(float alpha);
virtual void drawOsc(float* data, size_t len, ImVec2 pos0, ImVec2 pos1, ImVec4 color);
virtual void drawOsc(float* data, size_t len, ImVec2 pos0, ImVec2 pos1, ImVec4 color, ImVec2 canvasSize, float lineWidth);
virtual void present();
virtual bool getOutputSize(int& w, int& h);
virtual int getWindowFlags();
@ -1448,6 +1448,22 @@ class FurnaceGUIRender {
virtual ~FurnaceGUIRender();
};
struct PendingDrawOsc {
void* gui;
float* data;
size_t len;
ImVec2 pos0;
ImVec2 pos1;
ImVec4 color;
PendingDrawOsc():
gui(NULL),
data(NULL),
len(0),
pos0(0,0),
pos1(0,0),
color(0,0,0,0) {}
};
class FurnaceGUI {
DivEngine* e;
@ -2256,6 +2272,7 @@ class FurnaceGUI {
// oscilloscope
int oscTotal, oscWidth;
float* oscValues[DIV_MAX_OUTPUTS];
float* oscValuesAverage;
float oscZoom;
float oscWindowSize;
float oscInput, oscInput1;
@ -2670,6 +2687,7 @@ class FurnaceGUI {
void runBackupThread();
void pushPartBlend();
void popPartBlend();
void runPendingDrawOsc(PendingDrawOsc* which);
bool detectOutOfBoundsWindow(SDL_Rect& failing);
int processEvent(SDL_Event* ev);
bool loop();