diff --git a/src/wine-host/utils.cpp b/src/wine-host/utils.cpp index ce0562d6..484a9fe8 100644 --- a/src/wine-host/utils.cpp +++ b/src/wine-host/utils.cpp @@ -42,6 +42,12 @@ Win32Thread& Win32Thread::operator=(Win32Thread&& o) { return *this; } +void Win32Thread::wait() { + if (handle) { + WaitForSingleObject(handle.get(), INFINITE); + } +} + Win32Thread::Win32Thread() : handle(nullptr, nullptr) {} Win32Timer::Win32Timer(HWND window_handle, diff --git a/src/wine-host/utils.h b/src/wine-host/utils.h index c2c64c5f..10acf6a6 100644 --- a/src/wine-host/utils.h +++ b/src/wine-host/utils.h @@ -184,6 +184,12 @@ class Win32Thread { Win32Thread(Win32Thread&&); Win32Thread& operator=(Win32Thread&&); + /** + * Threads in Win32 don't join like threads on other platforms, but it may + * still be useful to wait for a thread to terminate. + */ + void wait(); + private: /** * The handle for the thread that is running, will be a null pointer if this