From d94cc3b935cedf1c9a27da5fb1d46ad27d37f36f Mon Sep 17 00:00:00 2001 From: James H Ball Date: Tue, 22 Oct 2024 13:52:19 +0100 Subject: [PATCH] Cleanly delete renderer --- .../components/VisualiserOpenGLComponent.cpp | 21 +++++++++++++++++-- Source/components/VisualiserOpenGLComponent.h | 1 + 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/Source/components/VisualiserOpenGLComponent.cpp b/Source/components/VisualiserOpenGLComponent.cpp index 88a4c5e..54f7ed3 100644 --- a/Source/components/VisualiserOpenGLComponent.cpp +++ b/Source/components/VisualiserOpenGLComponent.cpp @@ -8,6 +8,10 @@ VisualiserOpenGLComponent::VisualiserOpenGLComponent(VisualiserSettings& setting openGLContext.setContinuousRepainting(true); } +VisualiserOpenGLComponent::~VisualiserOpenGLComponent() { + openGLContext.detach(); +} + void VisualiserOpenGLComponent::newOpenGLContextCreated() { using namespace juce::gl; @@ -278,6 +282,21 @@ void VisualiserOpenGLComponent::newOpenGLContextCreated() { setupArrays(1024); } +void VisualiserOpenGLComponent::openGLContextClosing() { + using namespace juce::gl; + + glDeleteBuffers(1, &quadIndexBuffer); + glDeleteBuffers(1, &vertexIndexBuffer); + glDeleteBuffers(1, &vertexBuffer); + glDeleteFramebuffers(1, &frameBuffer); + glDeleteTextures(1, &lineTexture.id); + glDeleteTextures(1, &blur1Texture.id); + glDeleteTextures(1, &blur2Texture.id); + glDeleteTextures(1, &blur3Texture.id); + glDeleteTextures(1, &blur4Texture.id); + screenOpenGLTexture.release(); +} + void VisualiserOpenGLComponent::renderOpenGL() { if (openGLContext.isActive()) { xSamples.clear(); @@ -300,8 +319,6 @@ void VisualiserOpenGLComponent::renderOpenGL() { } } -void VisualiserOpenGLComponent::openGLContextClosing() {} - void VisualiserOpenGLComponent::resized() { viewportChanged(); } diff --git a/Source/components/VisualiserOpenGLComponent.h b/Source/components/VisualiserOpenGLComponent.h index cd4bdb1..3c8f852 100644 --- a/Source/components/VisualiserOpenGLComponent.h +++ b/Source/components/VisualiserOpenGLComponent.h @@ -12,6 +12,7 @@ struct Texture { class VisualiserOpenGLComponent : public juce::Component, public juce::OpenGLRenderer { public: VisualiserOpenGLComponent(VisualiserSettings& settings); + ~VisualiserOpenGLComponent() override; void newOpenGLContextCreated() override; void renderOpenGL() override;