libbluray | branch: master | hpi1 <[email protected]> | Thu Jun 30 15:11:47 2011 +0300| [7c615b77c85e21bd0cf219d0cc8cf21e99f366e7] | committer: hpi1
Splitted _process_psr_event() > http://git.videolan.org/gitweb.cgi/libbluray.git/?a=commit;h=7c615b77c85e21bd0cf219d0cc8cf21e99f366e7 --- src/libbluray/bluray.c | 88 ++++++++++++++++++++++++++--------------------- 1 files changed, 49 insertions(+), 39 deletions(-) diff --git a/src/libbluray/bluray.c b/src/libbluray/bluray.c index 9ced815..f54e561 100644 --- a/src/libbluray/bluray.c +++ b/src/libbluray/bluray.c @@ -1692,53 +1692,63 @@ void bd_stop_bdj(BLURAY *bd) * Navigation mode interface */ +static void _process_psr_restore_event(BLURAY *bd, BD_PSR_EVENT *ev) +{ + /* PSR restore events are handled internally. + * Restore stored playback position. + */ + + BD_DEBUG(DBG_BLURAY, "PSR restore: psr%u = %u (%p)\n", ev->psr_idx, ev->new_val, bd); + + switch (ev->psr_idx) { + case PSR_ANGLE_NUMBER: + /* can't set angle before playlist is opened */ + return; + case PSR_TITLE_NUMBER: + /* pass to the application */ + _queue_event(bd, (BD_EVENT){BD_EVENT_TITLE, ev->new_val}); + return; + case PSR_CHAPTER: + /* will be selected automatically */ + return; + case PSR_PLAYLIST: + bd_select_playlist(bd, ev->new_val); + nav_set_angle(bd->title, bd->st0.clip, bd_psr_read(bd->regs, PSR_ANGLE_NUMBER) - 1); + return; + case PSR_PLAYITEM: + bd_seek_playitem(bd, ev->new_val); + return; + case PSR_TIME: + bd_seek_time(bd, ((int64_t)ev->new_val) << 1); + return; + + case PSR_SELECTED_BUTTON_ID: + case PSR_MENU_PAGE_ID: + /* handled by graphics controller */ + return; + + default: + /* others: ignore */ + return; + } +} + /* * notification events to APP */ + static void _process_psr_event(void *handle, BD_PSR_EVENT *ev) { BLURAY *bd = (BLURAY*)handle; - if (ev->ev_type == BD_PSR_SAVE) { - BD_DEBUG(DBG_BLURAY, "PSR SAVE event (%p)\n", bd); - return; - } - - /* PSR restore events are handled internally */ - - if (ev->ev_type == BD_PSR_RESTORE) { + switch (ev->ev_type) { + case BD_PSR_RESTORE: + _process_psr_restore_event(bd, ev); + return; - BD_DEBUG(DBG_BLURAY, "PSR RESTORE event %d %d (%p)\n", ev->psr_idx, ev->new_val, bd); - - /* Restore stored playback position */ - - switch (ev->psr_idx) { - case PSR_ANGLE_NUMBER: - /* can't set angle before playlist is opened */ - return; - case PSR_TITLE_NUMBER: - /* pass to the application */ - break; - case PSR_CHAPTER: - /* will be selected automatically */ - return; - case PSR_PLAYLIST: - bd_select_playlist(bd, ev->new_val); - nav_set_angle(bd->title, bd->st0.clip, bd_psr_read(bd->regs, PSR_ANGLE_NUMBER) - 1); - return; - case PSR_PLAYITEM: - bd_seek_playitem(bd, ev->new_val); - return; - case PSR_TIME: - bd_seek_time(bd, ((int64_t)ev->new_val) << 1); - return; - case PSR_SELECTED_BUTTON_ID: - case PSR_MENU_PAGE_ID: - /* TODO: need to inform graphics controller ? */ - default: - /* others: ignore */ - return; - } + case BD_PSR_SAVE: + default: + return; } BD_DEBUG(DBG_BLURAY, "PSR event %d %d (%p)\n", ev->psr_idx, ev->new_val, bd); _______________________________________________ libbluray-devel mailing list [email protected] http://mailman.videolan.org/listinfo/libbluray-devel
