From 46326ed27c234f6a3693c888cccb0a0e83f91d46 Mon Sep 17 00:00:00 2001 From: Brad Davis Date: Thu, 13 Oct 2016 16:46:02 -0700 Subject: [PATCH] Fix crash in switching to plugin that uses the composite framebuffer in customizeContext --- .../src/display-plugins/OpenGLDisplayPlugin.cpp | 13 +++++++++---- .../src/display-plugins/OpenGLDisplayPlugin.h | 2 ++ 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.cpp b/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.cpp index 02e5a064f5..a92f36ed71 100644 --- a/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.cpp +++ b/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.cpp @@ -414,6 +414,7 @@ void OpenGLDisplayPlugin::customizeContext() { _cursorPipeline = gpu::Pipeline::create(program, state); } } + updateCompositeFramebuffer(); } void OpenGLDisplayPlugin::uncustomizeContext() { @@ -557,10 +558,7 @@ void OpenGLDisplayPlugin::compositeScene() { } void OpenGLDisplayPlugin::compositeLayers() { - auto renderSize = getRecommendedRenderSize(); - if (!_compositeFramebuffer || _compositeFramebuffer->getSize() != renderSize) { - _compositeFramebuffer = gpu::FramebufferPointer(gpu::Framebuffer::create("displayPlugin::composite", gpu::Element::COLOR_RGBA_32, renderSize.x, renderSize.y)); - } + updateCompositeFramebuffer(); { PROFILE_RANGE_EX("compositeScene", 0xff0077ff, (uint64_t)presentCount()) @@ -760,3 +758,10 @@ void OpenGLDisplayPlugin::render(std::function f) { OpenGLDisplayPlugin::~OpenGLDisplayPlugin() { qDebug() << "Destroying OpenGLDisplayPlugin"; } + +void OpenGLDisplayPlugin::updateCompositeFramebuffer() { + auto renderSize = getRecommendedRenderSize(); + if (!_compositeFramebuffer || _compositeFramebuffer->getSize() != renderSize) { + _compositeFramebuffer = gpu::FramebufferPointer(gpu::Framebuffer::create("OpenGLDisplayPlugin::composite", gpu::Element::COLOR_RGBA_32, renderSize.x, renderSize.y)); + } +} diff --git a/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.h b/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.h index 9369f6d72c..a6de3f7baa 100644 --- a/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.h +++ b/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.h @@ -78,6 +78,8 @@ protected: glm::uvec2 getSurfaceSize() const; glm::uvec2 getSurfacePixels() const; + void updateCompositeFramebuffer(); + virtual void compositeLayers(); virtual void compositeScene(); virtual void compositeOverlay();