diff options
-rw-r--r-- | core/mplayer.c | 22 | ||||
-rw-r--r-- | video/out/cocoa_common.m | 5 | ||||
-rw-r--r-- | video/out/vo.h | 3 |
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, |