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(); }