summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/mplayer.c22
-rw-r--r--video/out/cocoa_common.m5
-rw-r--r--video/out/vo.h3
3 files changed, 19 insertions, 11 deletions
diff --git a/core/mplayer.c b/core/mplayer.c
index 990d29bd64..8b98e12bf0 100644
--- a/core/mplayer.c
+++ b/core/mplayer.c
@@ -2474,6 +2474,12 @@ int reinit_video_chain(struct MPContext *mpctx)
mpctx->initialized_flags |= INITIALIZED_VCODEC;
+ vo_control(mpctx->video_out, opts->pause ? VOCTRL_RESTORE_SCREENSAVER
+ : VOCTRL_KILL_SCREENSAVER, NULL);
+
+ vo_control(mpctx->video_out, mpctx->paused ? VOCTRL_PAUSE
+ : VOCTRL_RESUME, NULL);
+
sh_video->last_pts = MP_NOPTS_VALUE;
sh_video->num_buffered_pts = 0;
sh_video->next_frame_time = 0;
@@ -2486,8 +2492,7 @@ int reinit_video_chain(struct MPContext *mpctx)
return 1;
err_out:
- if (!opts->fixed_vo)
- uninit_player(mpctx, INITIALIZED_VO);
+ uninit_player(mpctx, INITIALIZED_VO);
cleanup_demux_stream(mpctx, STREAM_VIDEO);
no_video:
mpctx->current_track[STREAM_VIDEO] = NULL;
@@ -2720,6 +2725,9 @@ void pause_player(struct MPContext *mpctx)
{
mpctx->opts.pause = 1;
+ if (mpctx->video_out)
+ vo_control(mpctx->video_out, VOCTRL_RESTORE_SCREENSAVER, NULL);
+
if (mpctx->paused)
return;
mpctx->paused = true;
@@ -2746,6 +2754,9 @@ void unpause_player(struct MPContext *mpctx)
{
mpctx->opts.pause = 0;
+ if (mpctx->video_out)
+ vo_control(mpctx->video_out, VOCTRL_KILL_SCREENSAVER, NULL);
+
if (!mpctx->paused)
return;
// Don't actually unpause while cache is loading.
@@ -2756,8 +2767,7 @@ void unpause_player(struct MPContext *mpctx)
if (mpctx->ao && mpctx->sh_audio)
ao_resume(mpctx->ao);
- if (mpctx->video_out && mpctx->sh_video && mpctx->video_out->config_ok
- && !mpctx->step_frames)
+ if (mpctx->video_out && mpctx->sh_video && mpctx->video_out->config_ok)
vo_control(mpctx->video_out, VOCTRL_RESUME, NULL); // resume video
(void)get_relative_time(mpctx); // ignore time that passed during pause
}
@@ -2786,8 +2796,6 @@ void add_step_frame(struct MPContext *mpctx, int dir)
{
if (dir > 0) {
mpctx->step_frames += 1;
- if (mpctx->video_out && mpctx->sh_video && mpctx->video_out->config_ok)
- vo_control(mpctx->video_out, VOCTRL_PAUSE, NULL);
unpause_player(mpctx);
} else if (dir < 0) {
if (!mpctx->backstep_active && !mpctx->hrseek_active) {
@@ -4155,8 +4163,6 @@ static void play_current_file(struct MPContext *mpctx)
if (opts->ass_style_override)
ass_set_style_overrides(mpctx->ass_library, opts->ass_force_style_list);
#endif
- if (mpctx->video_out && mpctx->video_out->config_ok)
- vo_control(mpctx->video_out, VOCTRL_RESUME, NULL);
mp_tmsg(MSGT_CPLAYER, MSGL_INFO, "Playing %s.\n", mpctx->filename);
diff --git a/video/out/cocoa_common.m b/video/out/cocoa_common.m
index 57d453018c..01ccc34d98 100644
--- a/video/out/cocoa_common.m
+++ b/video/out/cocoa_common.m
@@ -149,7 +149,6 @@ static void disable_power_management(struct vo *vo)
int vo_cocoa_init(struct vo *vo)
{
vo->cocoa = vo_cocoa_init_state(vo);
- disable_power_management(vo);
return 1;
}
@@ -556,10 +555,10 @@ int vo_cocoa_control(struct vo *vo, int *events, int request, void *arg)
vo_cocoa_set_cursor_visibility(vo, visible);
return VO_TRUE;
}
- case VOCTRL_PAUSE:
+ case VOCTRL_RESTORE_SCREENSAVER:
vo_cocoa_pause(vo);
return VO_TRUE;
- case VOCTRL_RESUME:
+ case VOCTRL_KILL_SCREENSAVER:
vo_cocoa_resume(vo);
return VO_TRUE;
}
diff --git a/video/out/vo.h b/video/out/vo.h
index 3dcc58b6c3..c1ab0eff8b 100644
--- a/video/out/vo.h
+++ b/video/out/vo.h
@@ -63,6 +63,9 @@ enum mp_voctrl {
VOCTRL_SET_CURSOR_VISIBILITY, // bool
+ VOCTRL_KILL_SCREENSAVER,
+ VOCTRL_RESTORE_SCREENSAVER,
+
VOCTRL_SET_DEINTERLACE,
VOCTRL_GET_DEINTERLACE,