mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-08-29 09:56:39 +00:00
Fix bool checks across threads to be correct, so it's not optimised out
This commit is contained in:
@@ -75,9 +75,13 @@ void RenderManager::BlockInvoke(RenderManager::InvokeMethod m)
|
||||
|
||||
PushInvoke(cmd);
|
||||
|
||||
while(!cmd->processed)
|
||||
for(;;)
|
||||
{
|
||||
if(cmd->processed.tryAcquire())
|
||||
break;
|
||||
}
|
||||
|
||||
delete cmd;
|
||||
}
|
||||
|
||||
void RenderManager::CloseThread()
|
||||
@@ -102,7 +106,7 @@ void RenderManager::PushInvoke(RenderManager::InvokeHandle *cmd)
|
||||
{
|
||||
if(m_Thread == NULL || !m_Thread->isRunning() || !m_Running)
|
||||
{
|
||||
cmd->processed = true;
|
||||
cmd->processed.release();
|
||||
if(cmd->selfdelete)
|
||||
delete cmd;
|
||||
return;
|
||||
@@ -150,7 +154,7 @@ void RenderManager::run()
|
||||
if(cmd->method != NULL)
|
||||
cmd->method(renderer);
|
||||
|
||||
cmd->processed = true;
|
||||
cmd->processed.release();
|
||||
|
||||
// if it's a throwaway command, delete it
|
||||
if(cmd->selfdelete)
|
||||
@@ -171,7 +175,7 @@ void RenderManager::run()
|
||||
if(cmd == NULL)
|
||||
continue;
|
||||
|
||||
cmd->processed = true;
|
||||
cmd->processed.release();
|
||||
|
||||
if(cmd->selfdelete)
|
||||
delete cmd;
|
||||
|
||||
Reference in New Issue
Block a user