libbluray | branch: master | hpi1 <[email protected]> | Mon Nov 15 16:13:48 2010 +0200| [cf6452640f57eef7fbd65639e13b1f8235546027] | committer: hpi1
_set_button_page(): referred button is always enabled > http://git.videolan.org/gitweb.cgi/libbluray.git/?a=commit;h=cf6452640f57eef7fbd65639e13b1f8235546027 --- src/libbluray/decoders/graphics_controller.c | 7 ++++++- 1 files changed, 6 insertions(+), 1 deletions(-) diff --git a/src/libbluray/decoders/graphics_controller.c b/src/libbluray/decoders/graphics_controller.c index 8568a05..5ff460b 100644 --- a/src/libbluray/decoders/graphics_controller.c +++ b/src/libbluray/decoders/graphics_controller.c @@ -475,6 +475,7 @@ static void _set_button_page(GRAPHICS_CONTROLLER *gc, uint32_t param, GC_NAV_CMD unsigned button_flag = param & 0x20000000; unsigned page_id = (param >> 16) & 0xff; unsigned button_id = param & 0xffff; + unsigned bog_idx = 0; PG_DISPLAY_SET *s = gc->igs; BD_IG_PAGE *page = NULL; @@ -525,7 +526,9 @@ static void _set_button_page(GRAPHICS_CONTROLLER *gc, uint32_t param, GC_NAV_CMD } if (button_flag) { - button = _find_button_page(page, button_id, NULL); + /* find correct button and overlap group */ + button = _find_button_page(page, button_id, &bog_idx); + if (!page_flag) { if (!button) { /* page not given, invalid button --> ignore command */ @@ -542,6 +545,8 @@ static void _set_button_page(GRAPHICS_CONTROLLER *gc, uint32_t param, GC_NAV_CMD if (!button) { button_id = 0xffff; // run 5.9.7.4 and 5.9.8.3 + } else { + gc->enabled_button[bog_idx] = button_id; } bd_psr_write(gc->regs, PSR_SELECTED_BUTTON_ID, button_id); _______________________________________________ libbluray-devel mailing list [email protected] http://mailman.videolan.org/listinfo/libbluray-devel
