From ba4db38441ee881bd9033ea4dcf33d8112714e50 Mon Sep 17 00:00:00 2001 From: Edwin Jakobs Date: Fri, 19 Mar 2021 16:33:10 +0100 Subject: [PATCH] [orx-panel] Fix creation of 0x0 render target on window minimization --- .../org/openrndr/panel/ControlManager.kt | 44 ++++++++++--------- 1 file changed, 23 insertions(+), 21 deletions(-) diff --git a/orx-panel/src/main/kotlin/org/openrndr/panel/ControlManager.kt b/orx-panel/src/main/kotlin/org/openrndr/panel/ControlManager.kt index 270e2c62..4314345f 100644 --- a/orx-panel/src/main/kotlin/org/openrndr/panel/ControlManager.kt +++ b/orx-panel/src/main/kotlin/org/openrndr/panel/ControlManager.kt @@ -361,29 +361,31 @@ class ControlManager : Extension { this.width = width this.height = height - body?.draw?.dirty = true + // check if user did not minimize window + if (width > 0 && height > 0) { + body?.draw?.dirty = true + if (renderTarget.colorAttachments.isNotEmpty()) { + renderTarget.colorBuffer(0).destroy() + renderTarget.depthBuffer?.destroy() + renderTarget.detachColorAttachments() + renderTarget.detachDepthBuffer() + renderTarget.destroy() + } else { + logger.error { "that is strange. no color buffers" } + } - if (renderTarget.colorAttachments.isNotEmpty()) { - renderTarget.colorBuffer(0).destroy() - renderTarget.depthBuffer?.destroy() - renderTarget.detachColorAttachments() - renderTarget.detachDepthBuffer() - renderTarget.destroy() - } else { - logger.error { "that is strange. no color buffers" } + renderTarget = renderTarget(program.width, program.height, contentScale) { + colorBuffer() + depthBuffer() + } + + renderTarget.bind() + program.drawer.clear(ColorRGBa.BLACK.opacify(0.0)) + renderTarget.unbind() + + renderTargetCache.forEach { (_, u) -> u.destroy() } + renderTargetCache.clear() } - - renderTarget = renderTarget(program.width, program.height, contentScale) { - colorBuffer() - depthBuffer() - } - - renderTarget.bind() - program.drawer.clear(ColorRGBa.BLACK.opacify(0.0)) - renderTarget.unbind() - - renderTargetCache.forEach { (_, u) -> u.destroy() } - renderTargetCache.clear() } private fun drawElement(element: Element, drawer: Drawer, zIndex: Int, zComp: Int) {