From 448b535d4830c8b21d86f554bb354d9670eaee3f Mon Sep 17 00:00:00 2001 From: xylosper Date: Tue, 25 Mar 2014 22:41:28 +0900 Subject: dvdnav: make MP_NAV_EVENT_RESET_ALL handled properly dvdnav.c did not handle event in regular sequence. Usually this does not make any trouble except around MP_NAV_EVENT_RESET_ALL. Those events should be handled in regular sequence. If they're mixed, it can make wrong result. For instance, MP_NAV_EVENT_HIGHLIGHT right after MP_NAV_EVENT_RESET_ALL should not be ignored but it might be because MP_NAV_EVENT_RESET_ALL makes the demuxer reloaded and osd hidden. --- player/dvdnav.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'player') diff --git a/player/dvdnav.c b/player/dvdnav.c index 20b11af52c..50b2e93d70 100644 --- a/player/dvdnav.c +++ b/player/dvdnav.c @@ -145,7 +145,9 @@ void mp_handle_nav(struct MPContext *mpctx) case MP_NAV_EVENT_RESET_ALL: { mpctx->stop_play = PT_RELOAD_DEMUXER; MP_VERBOSE(nav, "reload\n"); - break; + // return immediately. + // other events should be handled after reloaded. + return; } case MP_NAV_EVENT_RESET: { nav->nav_still_frame = 0; -- cgit v1.2.3