Forráskód Böngészése

startup_checks: Use WaitForSingleObject and more cleanup

lat9nq 4 éve
szülő
commit
7d9369d15e
1 módosított fájl, 9 hozzáadás és 6 törlés
  1. 9 6
      src/yuzu/startup_checks.cpp

+ 9 - 6
src/yuzu/startup_checks.cpp

@@ -58,13 +58,11 @@ bool StartupChecks(const char* arg0, bool* has_broken_vulkan) {
     }
 
     // Wait until the processs exits and get exit code from it
+    WaitForSingleObject(process_info.hProcess, INFINITE);
     DWORD exit_code = STILL_ACTIVE;
-    while (exit_code == STILL_ACTIVE) {
-        const int err = GetExitCodeProcess(process_info.hProcess, &exit_code);
-        if (err == 0) {
-            std::fprintf(stderr, "GetExitCodeProcess failed with error %d\n", GetLastError());
-            break;
-        }
+    const int err = GetExitCodeProcess(process_info.hProcess, &exit_code);
+    if (err == 0) {
+        std::fprintf(stderr, "GetExitCodeProcess failed with error %d\n", GetLastError());
     }
 
     // Vulkan is broken if the child crashed (return value is not zero)
@@ -77,6 +75,11 @@ bool StartupChecks(const char* arg0, bool* has_broken_vulkan) {
         std::fprintf(stderr, "CloseHandle failed with error %d\n", GetLastError());
     }
 
+    if (!SetEnvironmentVariableA(STARTUP_CHECK_ENV_VAR, nullptr)) {
+        std::fprintf(stderr, "SetEnvironmentVariableA failed to clear %s with error %d\n",
+                     STARTUP_CHECK_ENV_VAR, GetLastError());
+    }
+
 #elif defined(YUZU_UNIX)
     const pid_t pid = fork();
     if (pid == 0) {