summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
Diffstat (limited to 'core')
-rw-r--r--core/mp_core.h1
-rw-r--r--core/mplayer.c14
2 files changed, 9 insertions, 6 deletions
diff --git a/core/mp_core.h b/core/mp_core.h
index 8e76160a08..206ad030c9 100644
--- a/core/mp_core.h
+++ b/core/mp_core.h
@@ -255,6 +255,7 @@ typedef struct MPContext {
int step_frames;
// Counted down each frame, stop playback if 0 is reached. (-1 = disable)
int max_frames;
+ bool playing_msg_shown;
bool paused_for_cache;
diff --git a/core/mplayer.c b/core/mplayer.c
index ed8505251a..1a79213bdc 100644
--- a/core/mplayer.c
+++ b/core/mplayer.c
@@ -3397,6 +3397,13 @@ static void run_playloop(struct MPContext *mpctx)
update_subtitles(mpctx, a_pos);
}
+ if (opts->playing_msg && !mpctx->playing_msg_shown && new_frame_shown) {
+ mpctx->playing_msg_shown = true;
+ char *msg = mp_property_expand_string(mpctx, opts->playing_msg);
+ mp_msg(MSGT_CPLAYER, MSGL_INFO, "%s\n", msg);
+ talloc_free(msg);
+ }
+
/* It's possible for the user to simultaneously switch both audio
* and video streams to "disabled" at runtime. Handle this by waiting
* rather than immediately stopping playback due to EOF.
@@ -4013,12 +4020,6 @@ goto_enable_cache: ;
goto terminate_playback;
}
- if (opts->playing_msg) {
- char *msg = mp_property_expand_string(mpctx, opts->playing_msg);
- mp_msg(MSGT_CPLAYER, MSGL_INFO, "%s\n", msg);
- talloc_free(msg);
- }
-
// Disable the term OSD in verbose mode
if (verbose)
opts->term_osd = 0;
@@ -4079,6 +4080,7 @@ goto_enable_cache: ;
mpctx->step_frames = 0;
mpctx->total_avsync_change = 0;
mpctx->last_chapter_seek = -2;
+ mpctx->playing_msg_shown = false;
// If there's a timeline force an absolute seek to initialize state
double startpos = rel_time_to_abs(mpctx, opts->play_start, -1);