summaryrefslogtreecommitdiffstats
path: root/video/out/w32_common.c
diff options
context:
space:
mode:
authorDeadSix <DeadSix27@users.noreply.github.com>2023-09-22 15:35:39 +0200
committerDudemanguy <random342@airmail.cc>2023-09-27 14:02:08 +0000
commitf19ada7b583e9bf78de38d228a956c365b5c417b (patch)
treeedf2b08adc943e56b9921de03ddf0a37230e5497 /video/out/w32_common.c
parent5638fcabfdeae200d4591d274f30a2ec549230e7 (diff)
downloadmpv-f19ada7b583e9bf78de38d228a956c365b5c417b.tar.bz2
mpv-f19ada7b583e9bf78de38d228a956c365b5c417b.tar.xz
win32: add option to change backdrop style
Diffstat (limited to 'video/out/w32_common.c')
-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)
{