From 6c6be3c26335644bb65913a4db03388ec6ff4aab Mon Sep 17 00:00:00 2001 From: jsmall-nvidia Date: Tue, 27 Aug 2019 16:29:04 -0400 Subject: Two fixes to avoid random crash on destruction of GLRenderer (#1038) * Two fixes to avoid random crash on destruction of GLRenderer * Use of a weak reference from objects created by GLRenderer, such that GLRenderer dtor can disable those objects assuming GLRenderer is live * Make sure window is not destroyed before the renderer * Used WeakSink for weak pointer. --- tools/render-test/render-test-main.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'tools/render-test') diff --git a/tools/render-test/render-test-main.cpp b/tools/render-test/render-test-main.cpp index 0abf01b5a..a1768cdb2 100644 --- a/tools/render-test/render-test-main.cpp +++ b/tools/render-test/render-test-main.cpp @@ -879,7 +879,9 @@ SLANG_TEST_TOOL_API SlangResult innerMain(Slang::StdWriters* stdWriters, SlangSe // Parse command-line options SLANG_RETURN_ON_FAIL(parseOptions(argcIn, argvIn, StdWriters::getError())); - + // Declare window pointer before renderer, such that window is released after renderer + RefPtr window; + // Renderer is constructed (later) using the window Slang::RefPtr renderer; ShaderCompilerUtil::Input input; @@ -970,8 +972,7 @@ SLANG_TEST_TOOL_API SlangResult innerMain(Slang::StdWriters* stdWriters, SlangSe rendererName << "'" << gOptions.adapter << "'"; } - RefPtr window; - + if (renderer) { Renderer::Desc desc; -- cgit v1.2.3