diff options
| author | Connor McLaughlin <stenzek@gmail.com> | 2019-08-09 23:04:53 +1000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-08-09 23:04:53 +1000 |
| commit | ec1fe41eb28aed9f739c7e0239754e855aaeaf52 (patch) | |
| tree | cdc12b633773265f89acc1654a0eac9fbfe1165b /Source/Core | |
| parent | 7c1ca1fda1af35e31bf66dee3cbb533d7b122bb3 (diff) | |
| parent | 8e7970585492b9c1c17727c2b0a46ce5e7c4130e (diff) | |
Merge pull request #8298 from CookiePLMonster/win-updater-hide-fix
WinUpdater: Properly hide window on startup as intended
Diffstat (limited to 'Source/Core')
| -rw-r--r-- | Source/Core/WinUpdater/WinUI.cpp | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/Source/Core/WinUpdater/WinUI.cpp b/Source/Core/WinUpdater/WinUI.cpp index 97f2da459b..f6b0a7345c 100644 --- a/Source/Core/WinUpdater/WinUI.cpp +++ b/Source/Core/WinUpdater/WinUI.cpp @@ -12,6 +12,8 @@ #include <ShObjIdl.h> #include <shellapi.h> +#include "Common/Event.h" +#include "Common/ScopeGuard.h" #include "Common/StringUtil.h" namespace @@ -23,6 +25,7 @@ HWND current_progressbar_handle = nullptr; ITaskbarList3* taskbar_list = nullptr; std::thread ui_thread; +Common::Event window_created_event; int GetWindowHeight(HWND hwnd) { @@ -45,7 +48,7 @@ LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) }; // namespace constexpr int PROGRESSBAR_FLAGS = WS_VISIBLE | WS_CHILD | PBS_SMOOTH | PBS_SMOOTHREVERSE; -constexpr int WINDOW_FLAGS = WS_VISIBLE | WS_CLIPCHILDREN; +constexpr int WINDOW_FLAGS = WS_CLIPCHILDREN; constexpr int PADDING_HEIGHT = 5; namespace UI @@ -54,6 +57,9 @@ bool InitWindow() { InitCommonControls(); + // Notify main thread we're done creating the window when we return + Common::ScopeGuard ui_guard{[] { window_created_event.Set(); }}; + WNDCLASS wndcl = {}; wndcl.lpfnWndProc = WindowProc; wndcl.hbrBackground = GetSysColorBrush(COLOR_MENU); @@ -226,6 +232,9 @@ void MessageLoop() void Init() { ui_thread = std::thread(MessageLoop); + + // Wait for UI thread to finish creating the window (or at least attempting to) + window_created_event.Wait(); } void Stop() |
