libbluray | branch: master | hpi1 <[email protected]> | Sun May 1 16:36:23 2011 +0300| [f32a041ecfcee619bc6bb944c97a60898415202a] | committer: hpi1
hdmv_vm_suspend_pl(): verify object is suspended because of playlist playback > http://git.videolan.org/gitweb.cgi/libbluray.git/?a=commit;h=f32a041ecfcee619bc6bb944c97a60898415202a --- src/libbluray/hdmv/hdmv_vm.c | 19 +++++++++++++++++++ 1 files changed, 19 insertions(+), 0 deletions(-) diff --git a/src/libbluray/hdmv/hdmv_vm.c b/src/libbluray/hdmv/hdmv_vm.c index bda4e16..9e94337 100644 --- a/src/libbluray/hdmv/hdmv_vm.c +++ b/src/libbluray/hdmv/hdmv_vm.c @@ -278,6 +278,22 @@ void hdmv_vm_free(HDMV_VM **p) * suspend/resume ("function call") */ +static int _suspended_at_play_pl(HDMV_VM *p) +{ + int play_pl = 0; + if (p && p->suspended_object) { + MOBJ_CMD *cmd = &p->suspended_object->cmds[p->suspended_pc]; + HDMV_INSN *insn = &cmd->insn; + play_pl = (insn->grp == INSN_GROUP_BRANCH && + insn->sub_grp == BRANCH_PLAY && + ( insn->branch_opt == INSN_PLAY_PL || + insn->branch_opt == INSN_PLAY_PL_PI || + insn->branch_opt == INSN_PLAY_PL_PM)); + } + + return play_pl; +} + static void _suspend_object(HDMV_VM *p, int psr_backup) { BD_DEBUG(DBG_HDMV, "_suspend_object()\n"); @@ -985,6 +1001,9 @@ int hdmv_vm_suspend_pl(HDMV_VM *p) } else if (!p->suspended_object) { BD_DEBUG(DBG_HDMV, "hdmv_vm_suspend_pl(): No suspended object\n"); + } else if (!_suspended_at_play_pl(p)) { + BD_DEBUG(DBG_HDMV, "hdmv_vm_suspend_pl(): Object is not playing playlist\n"); + } else if (!p->suspended_object->resume_intention_flag) { BD_DEBUG(DBG_HDMV, "hdmv_vm_suspend_pl(): no resume intention flag\n"); _______________________________________________ libbluray-devel mailing list [email protected] http://mailman.videolan.org/listinfo/libbluray-devel
