diff options
author | Kacper Michajłow <kasper93@gmail.com> | 2023-10-04 19:53:46 +0200 |
---|---|---|
committer | sfan5 <sfan5@live.de> | 2023-10-05 17:10:23 +0200 |
commit | d17db1367affa954f5c52c793840b667527d88d3 (patch) | |
tree | cdf8d32c100a9de38f1d32e89974477c79a343b3 | |
parent | 817c6f9cb72301469e9df13d327bdae75d2d8e76 (diff) | |
download | mpv-d17db1367affa954f5c52c793840b667527d88d3.tar.bz2 mpv-d17db1367affa954f5c52c793840b667527d88d3.tar.xz |
win32: clear client area to black early
This fixes white background appearing for short period of time before
first frame is drawn. Clear to black as this is way less distracting
than bright white flash.
Borderless window and fullscreen seems to be initially not
drawn/transparent, so no need to clear it to black. Only when
decorations are enabled (--border) the issue happens.
Fixes: #12549
-rw-r--r-- | video/out/w32_common.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/video/out/w32_common.c b/video/out/w32_common.c index ecb33d2479..5e3f7b4808 100644 --- a/video/out/w32_common.c +++ b/video/out/w32_common.c @@ -1141,8 +1141,10 @@ static LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, } switch (message) { - case WM_ERASEBKGND: // no need to erase background separately - return 1; + case WM_ERASEBKGND: + if (!w32->parent && (!w32->opts->border || w32->current_fs)) + return TRUE; + break; case WM_PAINT: signal_events(w32, VO_EVENT_EXPOSE); break; @@ -1446,6 +1448,7 @@ static void register_window_class(void) .hInstance = HINST_THISCOMPONENT, .hIcon = LoadIconW(HINST_THISCOMPONENT, L"IDI_ICON1"), .hCursor = LoadCursor(NULL, IDC_ARROW), + .hbrBackground = (HBRUSH) GetStockObject(BLACK_BRUSH), .lpszClassName = L"mpv", }); } |