diff options
Diffstat (limited to 'video')
-rw-r--r-- | video/out/w32_common.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/video/out/w32_common.c b/video/out/w32_common.c index 9664b4b980..0eafbcc4ae 100644 --- a/video/out/w32_common.c +++ b/video/out/w32_common.c @@ -58,7 +58,10 @@ EXTERN_C IMAGE_DOS_HEADER __ImageBase; #define DWMWA_USE_IMMERSIVE_DARK_MODE 20 #endif + +//Older MinGW compatibility #define DWMWA_WINDOW_CORNER_PREFERENCE 33 +#define DWMWA_SYSTEMBACKDROP_TYPE 38 #ifndef DPI_ENUMS_DECLARED typedef enum MONITOR_DPI_TYPE { @@ -1096,6 +1099,16 @@ static void update_dark_mode(const struct vo_w32_state *w32) &use_dark_mode, sizeof(use_dark_mode)); } +static void update_backdrop(const struct vo_w32_state *w32) +{ + if (w32->parent) + return; + + int backdropType = w32->opts->backdrop_type; + DwmSetWindowAttribute(w32->window, DWMWA_SYSTEMBACKDROP_TYPE, + &backdropType, sizeof(backdropType)); +} + static LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { @@ -1674,6 +1687,8 @@ static void *gui_thread(void *ptr) update_corners_pref(w32); if (w32->opts->window_affinity) update_affinity(w32); + if (w32->opts->backdrop_type) + update_backdrop(w32); if (SUCCEEDED(OleInitialize(NULL))) { ole_ok = true; @@ -1852,6 +1867,8 @@ static int gui_thread_control(struct vo_w32_state *w32, int request, void *arg) update_affinity(w32); } else if (changed_option == &vo_opts->ontop) { update_window_state(w32); + } else if (changed_option == &vo_opts->backdrop_type) { + update_backdrop(w32); } else if (changed_option == &vo_opts->border || changed_option == &vo_opts->title_bar) { |