From f9442ead2a750c04d24f62b6589ba0544c33ace2 Mon Sep 17 00:00:00 2001 From: "Adam D. Ruppe" Date: Wed, 3 Apr 2019 09:56:43 -0400 Subject: [PATCH] remove GC from potentially per-frame call --- simpledisplay.d | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/simpledisplay.d b/simpledisplay.d index 3753be7..602bd15 100644 --- a/simpledisplay.d +++ b/simpledisplay.d @@ -6196,6 +6196,10 @@ struct ScreenPainter { currentClipRectangle = arsd.color.Rectangle(0, 0, window.width, window.height); if(window.activeScreenPainter !is null) { impl = window.activeScreenPainter; + if(impl.referenceCount == 0) { + impl.window = window; + impl.create(handle); + } impl.referenceCount++; // writeln("refcount ++ ", impl.referenceCount); } else { @@ -6227,7 +6231,7 @@ struct ScreenPainter { if(impl.referenceCount == 0) { //writeln("destructed"); impl.dispose(); - window.activeScreenPainter = null; + *window.activeScreenPainter = ScreenPainterImplementation.init; //import std.stdio; writeln("paint finished"); } else { // there is still an active reference, reset stuff so the