summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
authorConnor McLaughlin <stenzek@gmail.com>2019-08-09 23:04:53 +1000
committerGitHub <noreply@github.com>2019-08-09 23:04:53 +1000
commitec1fe41eb28aed9f739c7e0239754e855aaeaf52 (patch)
treecdc12b633773265f89acc1654a0eac9fbfe1165b /Source/Core
parent7c1ca1fda1af35e31bf66dee3cbb533d7b122bb3 (diff)
parent8e7970585492b9c1c17727c2b0a46ce5e7c4130e (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.cpp11
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()