summaryrefslogtreecommitdiffstats
path: root/video
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2013-06-15 19:04:20 +0200
committerwm4 <wm4@nowhere>2013-06-15 19:07:21 +0200
commit168a595bfeb97be89da314dcc652b7c4782e43e5 (patch)
treec5e88c9eec004a8a5cd66a68ad4b1cdd1382b97a /video
parent70f97efa720ee2366cb6c1eeefb211c11fd88a63 (diff)
downloadmpv-168a595bfeb97be89da314dcc652b7c4782e43e5.tar.bz2
mpv-168a595bfeb97be89da314dcc652b7c4782e43e5.tar.xz
video/out: introduce VOCTRL_UPDATE_WINDOW_TITLE
Instead of implicitly changing the window title on config(), do it as part of the new VOCTRL. At first I wanted to make all VOs use the VOCTRL argument directly, but on a second thought it appears vo_get_window_title() is much more useful for some (namely, if the window is created lazily on first config()). Not all VOs are changed. Wayland and OSX have to follow.
Diffstat (limited to 'video')
-rw-r--r--video/out/vo.h1
-rw-r--r--video/out/vo_sdl.c6
-rw-r--r--video/out/w32_common.c10
-rw-r--r--video/out/x11_common.c9
4 files changed, 21 insertions, 5 deletions
diff --git a/video/out/vo.h b/video/out/vo.h
index 2ac993923d..df16a01d0e 100644
--- a/video/out/vo.h
+++ b/video/out/vo.h
@@ -60,6 +60,7 @@ enum mp_voctrl {
VOCTRL_ONTOP,
VOCTRL_BORDER,
+ VOCTRL_UPDATE_WINDOW_TITLE, // char*
VOCTRL_SET_CURSOR_VISIBILITY, // bool
diff --git a/video/out/vo_sdl.c b/video/out/vo_sdl.c
index dd825c30d8..66013e01f2 100644
--- a/video/out/vo_sdl.c
+++ b/video/out/vo_sdl.c
@@ -939,6 +939,8 @@ static int get_eq(struct vo *vo, const char *name, int *value)
static int control(struct vo *vo, uint32_t request, void *data)
{
+ struct priv *vc = vo->priv;
+
switch (request) {
case VOCTRL_CHECK_EVENTS:
check_events(vo);
@@ -976,6 +978,10 @@ static int control(struct vo *vo, uint32_t request, void *data)
case VOCTRL_SET_CURSOR_VISIBILITY:
SDL_ShowCursor(*(bool *)data);
return true;
+ case VOCTRL_UPDATE_WINDOW_TITLE:
+ if (vc->window)
+ SDL_SetWindowTitle(vc->window, vo_get_window_title(vo));
+ return true;
}
return VO_NOTIMPL;
}
diff --git a/video/out/w32_common.c b/video/out/w32_common.c
index e97a9e2e85..7d60435c5b 100644
--- a/video/out/w32_common.c
+++ b/video/out/w32_common.c
@@ -407,10 +407,6 @@ static int reinit_window_state(struct vo *vo)
if (vo->opts->WinID >= 0)
return 1;
- wchar_t *title = mp_from_utf8(NULL, vo_get_window_title(vo));
- SetWindowTextW(w32->window, title);
- talloc_free(title);
-
bool toggle_fs = w32->current_fs != vo->opts->fs;
w32->current_fs = vo->opts->fs;
@@ -705,6 +701,12 @@ int vo_w32_control(struct vo *vo, int *events, int request, void *arg)
case VOCTRL_RESTORE_SCREENSAVER:
w32->disable_screensaver = false;
return VO_TRUE;
+ case VOCTRL_UPDATE_WINDOW_TITLE: {
+ wchar_t *title = mp_from_utf8(NULL, (char *)arg);
+ SetWindowTextW(w32->window, title);
+ talloc_free(title);
+ return VO_TRUE;
+ }
}
return VO_NOTIMPL;
}
diff --git a/video/out/x11_common.c b/video/out/x11_common.c
index ecafc4a324..9d2db30924 100644
--- a/video/out/x11_common.c
+++ b/video/out/x11_common.c
@@ -915,6 +915,9 @@ static void vo_x11_update_window_title(struct vo *vo)
{
struct vo_x11_state *x11 = vo->x11;
+ if (!x11->window)
+ return;
+
const char *title = vo_get_window_title(vo);
vo_x11_set_property_string(vo, XA_WM_NAME, title);
vo_x11_set_property_string(vo, XA_WM_ICON_NAME, title);
@@ -970,6 +973,8 @@ static void vo_x11_create_window(struct vo *vo, XVisualInfo *vis, int x, int y,
XNClientWindow, x11->window,
XNFocusWindow, x11->window,
NULL);
+
+ vo_x11_update_window_title(vo);
}
static void vo_x11_map_window(struct vo *vo, int x, int y, int w, int h)
@@ -1022,7 +1027,6 @@ void vo_x11_config_vo_window(struct vo *vo, XVisualInfo *vis, int x, int y,
if (flags & VOFLAG_HIDDEN)
return;
- vo_x11_update_window_title(vo);
if (opts->ontop)
vo_x11_setlayer(vo, x11->window, opts->ontop);
@@ -1396,6 +1400,9 @@ int vo_x11_control(struct vo *vo, int *events, int request, void *arg)
case VOCTRL_RESTORE_SCREENSAVER:
saver_on(x11);
return VO_TRUE;
+ case VOCTRL_UPDATE_WINDOW_TITLE:
+ vo_x11_update_window_title(vo);
+ return VO_TRUE;
}
return VO_NOTIMPL;
}