libbluray | branch: master | hpi1 <[email protected]> | Sun Apr 19 16:09:14 2015 +0300| [1e6974a33bee9f5c5123bc42dd299c80c222692d] | committer: hpi1
Notify app when UO mask changes > http://git.videolan.org/gitweb.cgi/libbluray.git/?a=commit;h=1e6974a33bee9f5c5123bc42dd299c80c222692d --- src/libbluray/bluray.c | 12 ++++++++++-- src/libbluray/bluray.h | 9 ++++++++- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/libbluray/bluray.c b/src/libbluray/bluray.c index cc1894f..c074127 100644 --- a/src/libbluray/bluray.c +++ b/src/libbluray/bluray.c @@ -527,13 +527,21 @@ static void _init_textst_timer(BLURAY *bd) * UO mask */ +static uint32_t _compressed_mask(BD_UO_MASK mask) +{ + return mask.menu_call | (mask.title_search << 1); +} + static void _update_uo_mask(BLURAY *bd) { + BD_UO_MASK old_mask = bd->uo_mask; BD_UO_MASK new_mask; new_mask = bd_uo_mask_combine(bd->title_uo_mask, bd->st0.uo_mask); - - bd->uo_mask = new_mask; + if (_compressed_mask(old_mask) != _compressed_mask(new_mask)) { + bd->uo_mask = new_mask; + _queue_event(bd, BD_EVENT_UO_MASK_CHANGED, _compressed_mask(new_mask)); + } } #ifdef USING_BDJAVA diff --git a/src/libbluray/bluray.h b/src/libbluray/bluray.h index 1705ef9..6ade74b 100644 --- a/src/libbluray/bluray.h +++ b/src/libbluray/bluray.h @@ -730,7 +730,10 @@ typedef enum { /* BD-J key interest table changed */ BD_EVENT_KEY_INTEREST_TABLE = 32, /* bitmask, BLURAY_KIT_* */ - /*BD_EVENT_LAST = 32, */ + /* UO mask changed */ + BD_EVENT_UO_MASK_CHANGED = 33, /* bitmask, BLURAY_UO_* */ + + /*BD_EVENT_LAST = 33, */ } bd_event_e; @@ -764,6 +767,10 @@ typedef struct { #define BLURAY_KIT_SEC_VIDEO 0x200 #define BLURAY_KIT_PG_TEXTST 0x400 +/* BD_EVENT_UO_MASK flags */ +#define BLURAY_UO_MENU_CALL 0x1 +#define BLURAY_UO_TITLE_SEARCH 0x2 + /** * * Get event from libbluray event queue. _______________________________________________ libbluray-devel mailing list [email protected] https://mailman.videolan.org/listinfo/libbluray-devel
