summaryrefslogtreecommitdiffstats
path: root/video
diff options
context:
space:
mode:
Diffstat (limited to 'video')
-rw-r--r--video/out/w32_common.c17
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)
{