libbluray | branch: master | hpi1 <[email protected]> | Sat Feb 2 21:54:11 2013 +0200| [604f0e6cf4bd3e198e70b548a3e604e232729dd9] | committer: hpi1
Fixed resuming movie object when IG object stops playlist playback > http://git.videolan.org/gitweb.cgi/libbluray.git/?a=commit;h=604f0e6cf4bd3e198e70b548a3e604e232729dd9 --- src/libbluray/bluray.c | 2 ++ src/libbluray/hdmv/hdmv_vm.c | 10 +++++++++- src/libbluray/hdmv/hdmv_vm.h | 7 +++++++ 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/libbluray/bluray.c b/src/libbluray/bluray.c index ff16c38..6cb5600 100644 --- a/src/libbluray/bluray.c +++ b/src/libbluray/bluray.c @@ -2692,6 +2692,8 @@ static void _process_hdmv_vm_event(BLURAY *bd, HDMV_EVENT *hev) case HDMV_EVENT_PLAY_STOP: // stop current playlist _close_playlist(bd); + + bd->hdmv_suspended = !hdmv_vm_running(bd->hdmv_vm); break; case HDMV_EVENT_STILL: diff --git a/src/libbluray/hdmv/hdmv_vm.c b/src/libbluray/hdmv/hdmv_vm.c index 8babf66..b6291c2 100644 --- a/src/libbluray/hdmv/hdmv_vm.c +++ b/src/libbluray/hdmv/hdmv_vm.c @@ -548,7 +548,13 @@ static int _play_stop(HDMV_VM *p) } BD_DEBUG(DBG_HDMV, "_play_stop()\n"); - _queue_event(p, HDMV_EVENT_PLAY_STOP, 0); + _queue_event(p, HDMV_EVENT_PLAY_STOP, 1); + + /* terminate IG object. Continue executing movie object. */ + if (_resume_from_play_pl(p) < 0) { + BD_DEBUG(DBG_HDMV|DBG_CRIT, "_play_stop(): resuming movie object failed !\n"); + return -1; + } return 0; } @@ -778,6 +784,8 @@ static void _set_nv_timer(HDMV_VM *p, uint32_t dst, uint32_t src) return; } + BD_DEBUG(DBG_HDMV | DBG_CRIT, "_set_nv_timer(): navigation timer not implemented !\n"); + /* set expiration time */ p->nv_timer.time = time(NULL); p->nv_timer.time += timeout; diff --git a/src/libbluray/hdmv/hdmv_vm.h b/src/libbluray/hdmv/hdmv_vm.h index be4ae08..102a22e 100644 --- a/src/libbluray/hdmv/hdmv_vm.h +++ b/src/libbluray/hdmv/hdmv_vm.h @@ -33,6 +33,10 @@ typedef enum { HDMV_EVENT_END, /* end of program (movie object) */ HDMV_EVENT_IG_END, /* end of program (interactive) */ + /* + * playback control + */ + HDMV_EVENT_TITLE, /* play title (from disc index) */ HDMV_EVENT_PLAY_PL, /* select playlist */ HDMV_EVENT_PLAY_PI, /* seek to playitem */ @@ -41,6 +45,9 @@ typedef enum { HDMV_EVENT_STILL, /* param: boolean */ + /* + * -> graphics controller + */ HDMV_EVENT_SET_BUTTON_PAGE, HDMV_EVENT_ENABLE_BUTTON, HDMV_EVENT_DISABLE_BUTTON, _______________________________________________ libbluray-devel mailing list [email protected] http://mailman.videolan.org/listinfo/libbluray-devel
