From 2974ca8d124fbf201cdf20bc5b54dec5948a61ac Mon Sep 17 00:00:00 2001 From: baldurk Date: Thu, 5 Apr 2018 12:34:22 +0100 Subject: [PATCH] Delete replay outputs on replay thread, not on UI thread * On OpenGL this can cause problems with not being able to make the output context current because it's already current on the replay thread. --- qrenderdoc/Windows/BufferViewer.cpp | 4 +++- qrenderdoc/Windows/TextureViewer.cpp | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/qrenderdoc/Windows/BufferViewer.cpp b/qrenderdoc/Windows/BufferViewer.cpp index c615b6ae1..834369085 100644 --- a/qrenderdoc/Windows/BufferViewer.cpp +++ b/qrenderdoc/Windows/BufferViewer.cpp @@ -1330,7 +1330,9 @@ void BufferViewer::stageRowMenu(MeshDataStage stage, QMenu *menu, const QPoint & BufferViewer::~BufferViewer() { if(m_Output) - m_Output->Shutdown(); + { + m_Ctx.Replay().BlockInvoke([this](IReplayController *r) { m_Output->Shutdown(); }); + } if(m_ModelVSIn->indices) m_ModelVSIn->indices->deref(); diff --git a/qrenderdoc/Windows/TextureViewer.cpp b/qrenderdoc/Windows/TextureViewer.cpp index bb6f8b40e..b645f8644 100644 --- a/qrenderdoc/Windows/TextureViewer.cpp +++ b/qrenderdoc/Windows/TextureViewer.cpp @@ -659,7 +659,9 @@ TextureViewer::TextureViewer(ICaptureContext &ctx, QWidget *parent) TextureViewer::~TextureViewer() { if(m_Output) - m_Output->Shutdown(); + { + m_Ctx.Replay().BlockInvoke([this](IReplayController *r) { m_Output->Shutdown(); }); + } m_Ctx.BuiltinWindowClosed(this); m_Ctx.RemoveCaptureViewer(this);