From d8638fdd2a8171f14fd6bb0eb46b1e00a08e42f2 Mon Sep 17 00:00:00 2001 From: Tom Poole Date: Mon, 12 Aug 2019 12:40:00 +0100 Subject: [PATCH] OpenGL: Fixed an issue cloning OpenGLImageType images --- modules/juce_opengl/opengl/juce_OpenGLImage.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/modules/juce_opengl/opengl/juce_OpenGLImage.cpp b/modules/juce_opengl/opengl/juce_OpenGLImage.cpp index 179d9b3af0..23235a6898 100644 --- a/modules/juce_opengl/opengl/juce_OpenGLImage.cpp +++ b/modules/juce_opengl/opengl/juce_OpenGLImage.cpp @@ -40,7 +40,11 @@ public: bool initialise() { - return frameBuffer.initialise (context, width, height); + if (! frameBuffer.initialise (context, width, height)) + return false; + + frameBuffer.clear (Colours::transparentBlack); + return true; } std::unique_ptr createLowLevelContext() override @@ -53,7 +57,12 @@ public: ImagePixelData::Ptr clone() override { - Image newImage (*new OpenGLFrameBufferImage (context, width, height)); + std::unique_ptr im (new OpenGLFrameBufferImage (context, width, height)); + + if (! im->initialise()) + return ImagePixelData::Ptr(); + + Image newImage (im.release()); Graphics g (newImage); g.drawImageAt (Image (*this), 0, 0, false); @@ -192,7 +201,6 @@ ImagePixelData::Ptr OpenGLImageType::create (Image::PixelFormat, int width, int if (! im->initialise()) return ImagePixelData::Ptr(); - im->frameBuffer.clear (Colours::transparentBlack); return *im.release(); }