diff options
| author | jsmall-nvidia <jsmall@nvidia.com> | 2019-08-27 16:29:04 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-08-27 16:29:04 -0400 |
| commit | 6c6be3c26335644bb65913a4db03388ec6ff4aab (patch) | |
| tree | 9fb934a203a77431da2d0aea49086d247c9085fe /tools/render-test | |
| parent | e44a653e6a27c198010425792fdf9c97da163d0d (diff) | |
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.
Diffstat (limited to 'tools/render-test')
| -rw-r--r-- | tools/render-test/render-test-main.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
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<renderer_test::Window> window; + // Renderer is constructed (later) using the window Slang::RefPtr<Renderer> renderer; ShaderCompilerUtil::Input input; @@ -970,8 +972,7 @@ SLANG_TEST_TOOL_API SlangResult innerMain(Slang::StdWriters* stdWriters, SlangSe rendererName << "'" << gOptions.adapter << "'"; } - RefPtr<renderer_test::Window> window; - + if (renderer) { Renderer::Desc desc; |
