summaryrefslogtreecommitdiffstats
path: root/mpvcore/mplayer.c
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2013-09-08 02:46:19 +0200
committerwm4 <wm4@nowhere>2013-09-08 03:03:58 +0200
commitcecbd8864ec9e03f8fc14f0a92bead310de946a9 (patch)
tree07e59d9260a67900569784bea439884c3ced7bfa /mpvcore/mplayer.c
parent68e331851ad206b7504353e864d5720c9d0d73e1 (diff)
downloadmpv-cecbd8864ec9e03f8fc14f0a92bead310de946a9.tar.bz2
mpv-cecbd8864ec9e03f8fc14f0a92bead310de946a9.tar.xz
mplayer: add --cursor-autohide-fs-only option
This option makes the cursor always visible in windowed mode. Apparently, this is what (some?) Windows and OSX users expect. It's disabled by default for now. Restructure the cursor hide logic a bit for this purpose.
Diffstat (limited to 'mpvcore/mplayer.c')
-rw-r--r--mpvcore/mplayer.c41
1 files changed, 23 insertions, 18 deletions
diff --git a/mpvcore/mplayer.c b/mpvcore/mplayer.c
index 3a2b65b31c..c9b51c8272 100644
--- a/mpvcore/mplayer.c
+++ b/mpvcore/mplayer.c
@@ -2402,10 +2402,7 @@ int reinit_video_chain(struct MPContext *mpctx)
"the selected video_out (-vo) device.\n");
goto err_out;
}
- if (opts->cursor_autohide_delay != -1) {
- vo_control(mpctx->video_out, VOCTRL_SET_CURSOR_VISIBILITY,
- &(bool){false});
- }
+ mpctx->mouse_cursor_visible = true;
mpctx->initialized_flags |= INITIALIZED_VO;
}
@@ -3454,25 +3451,33 @@ static void run_playloop(struct MPContext *mpctx)
// ================================================================
vo_check_events(vo);
+ bool mouse_cursor_visible = mpctx->mouse_cursor_visible;
+ if (opts->cursor_autohide_delay == -1)
+ mouse_cursor_visible = true;
+
unsigned mouse_event_ts = mp_input_get_mouse_event_counter(mpctx->input);
if (mpctx->mouse_event_ts != mouse_event_ts) {
mpctx->mouse_event_ts = mouse_event_ts;
- if (opts->cursor_autohide_delay > -1) {
- vo_control(vo, VOCTRL_SET_CURSOR_VISIBILITY, &(bool){true});
- if (opts->cursor_autohide_delay >= 0) {
- mpctx->mouse_waiting_hide = 1;
- mpctx->mouse_timer =
- mp_time_sec() + opts->cursor_autohide_delay / 1000.0;
- }
- }
+ mpctx->mouse_timer =
+ mp_time_sec() + opts->cursor_autohide_delay / 1000.0;
+ mouse_cursor_visible = true;
}
- if (mpctx->mouse_waiting_hide == 1 &&
- mp_time_sec() >= mpctx->mouse_timer)
- {
- vo_control(vo, VOCTRL_SET_CURSOR_VISIBILITY, &(bool){false});
- mpctx->mouse_waiting_hide = 2;
- }
+ if (mp_time_sec() >= mpctx->mouse_timer)
+ mouse_cursor_visible = false;
+
+ if (opts->cursor_autohide_delay == -1)
+ mouse_cursor_visible = true;
+
+ if (opts->cursor_autohide_delay == -2)
+ mouse_cursor_visible = false;
+
+ if (opts->cursor_autohide_fs && !opts->vo.fullscreen)
+ mouse_cursor_visible = true;
+
+ if (mouse_cursor_visible != mpctx->mouse_cursor_visible)
+ vo_control(vo, VOCTRL_SET_CURSOR_VISIBILITY, &mouse_cursor_visible);
+ mpctx->mouse_cursor_visible = mouse_cursor_visible;
if (opts->heartbeat_cmd) {
double now = mp_time_sec();