diff options
author | wm4 <wm4@nowhere> | 2012-08-04 03:46:11 +0200 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2012-08-04 19:59:56 +0200 |
commit | 9a2f4e10e71aa1c0c2970f807fe14000861b602b (patch) | |
tree | 35785a60a5befd494de2a790b44d35d9bfa3a044 /command.c | |
parent | c7be71ae710280f750c14973e303ec3550e94ec3 (diff) | |
download | mpv-9a2f4e10e71aa1c0c2970f807fe14000861b602b.tar.bz2 mpv-9a2f4e10e71aa1c0c2970f807fe14000861b602b.tar.xz |
mplayer: never exit mplayer from within the play loop
The only place exit_player() should be called is the main() function.
exit_player() should be the only function allowed to call exit(). This
makes it easier to guarantee proper deinitialization, and allows using
the --leak-report flag without showing false positives.
The quit slave command now sets a flag only. It uses the same mechanism
that's normally used to advance to the next file on the playlist, so the
rest of the playback path should be able to react to the quit command
quickly enough. That is, the player should react just as fast to quit
requests in practice as before this commit.
In reinit_audio_chain(), the player was actually exited if
init_audio_filters() failed. Reuse the normal error handling path to
handle this condition.
Diffstat (limited to 'command.c')
-rw-r--r-- | command.c | 5 |
1 files changed, 3 insertions, 2 deletions
@@ -2872,8 +2872,9 @@ void run_command(MPContext *mpctx, mp_cmd_t *cmd) break; case MP_CMD_QUIT: - exit_player_with_rc(mpctx, EXIT_QUIT, - (cmd->nargs > 0) ? cmd->args[0].v.i : 0); + mpctx->stop_play = PT_QUIT; + mpctx->quit_player_rc = (cmd->nargs > 0) ? cmd->args[0].v.i : 0; + break; case MP_CMD_PLAYLIST_NEXT: case MP_CMD_PLAYLIST_PREV: |