From f22d38bc63e26b27415eeff453e4f27dce0ac9fe Mon Sep 17 00:00:00 2001 From: David McFarland Date: Mon, 1 May 2017 15:34:53 -0300 Subject: [PATCH] Don't resume threads created with CREATE_SUSPENDED This fixes errors in Unity 5.6 when it creates baking processes. --- renderdoc/os/win32/sys_win32_hooks.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/renderdoc/os/win32/sys_win32_hooks.cpp b/renderdoc/os/win32/sys_win32_hooks.cpp index 58abbc398..0669cb62c 100644 --- a/renderdoc/os/win32/sys_win32_hooks.cpp +++ b/renderdoc/os/win32/sys_win32_hooks.cpp @@ -276,6 +276,7 @@ private: *lpProcessInformation = dummy; } + bool resume = (dwCreationFlags & CREATE_SUSPENDED) == 0; dwCreationFlags |= CREATE_SUSPENDED; BOOL ret = realFunc(lpApplicationName, lpCommandLine, lpProcessAttributes, lpThreadAttributes, @@ -328,7 +329,10 @@ private: } } - ResumeThread(lpProcessInformation->hThread); + if(resume) + { + ResumeThread(lpProcessInformation->hThread); + } // ensure we clean up after ourselves if(dummy.dwProcessId != 0) @@ -360,6 +364,7 @@ private: *lpProcessInformation = dummy; } + bool resume = (dwCreationFlags & CREATE_SUSPENDED) == 0; dwCreationFlags |= CREATE_SUSPENDED; BOOL ret = realFunc(lpApplicationName, lpCommandLine, lpProcessAttributes, lpThreadAttributes, @@ -414,7 +419,10 @@ private: } } - ResumeThread(lpProcessInformation->hThread); + if(resume) + { + ResumeThread(lpProcessInformation->hThread); + } // ensure we clean up after ourselves if(dummy.dwProcessId != 0)