# HG changeset patch # User jcdutton # Date 1049626768 0 # Node ID 7094c8661c055ccef82377736f3747f2debe71a5 # Parent a68751e6e84fae42f69325b42e0b37e081c97538 Return details about menu number in dvdnav_current_title_info() If title = 0, we are in menu, and part gives us what menu number. If title > 0, we are in a title. diff -r a68751e6e84f -r 7094c8661c05 navigation.c --- a/navigation.c Sat Apr 05 21:23:02 2003 +0000 +++ b/navigation.c Sun Apr 06 10:59:28 2003 +0000 @@ -111,6 +111,13 @@ return S_ERR; } if (this->vm->state.domain != VTS_DOMAIN) { + if ( (this->vm->state.domain == VTSM_DOMAIN) + || (this->vm->state.domain == VMGM_DOMAIN) ) { + /* Get current Menu ID: into *part. */ + vm_get_current_menu(this->vm, part); + pthread_mutex_unlock(&this->vm_lock); + return S_OK; + } printerr("Not in VTS domain."); pthread_mutex_unlock(&this->vm_lock); return S_ERR; diff -r a68751e6e84f -r 7094c8661c05 vm.c --- a/vm.c Sat Apr 05 21:23:02 2003 +0000 +++ b/vm.c Sun Apr 06 10:59:28 2003 +0000 @@ -574,6 +574,18 @@ /* getting information */ +int vm_get_current_menu(vm_t *vm, int *menuid) +{ + pgcit_t* pgcit; + int pgcn; + pgcn = (vm->state).pgcN; + pgcit = get_PGCIT(vm); + *menuid = pgcit->pgci_srp[pgcn - 1].entry_id & 0xf ; + printf("PGCN = %d, MENU_ID = %d\n", pgcn, *menuid); + return S_OK; + +} + int vm_get_current_title_part(vm_t *vm, int *title_result, int *part_result) { vts_ptt_srpt_t *vts_ptt_srpt; @@ -1593,6 +1605,8 @@ } (vm->state).pgc = pgcit->pgci_srp[pgcN - 1].pgc; + printf("Setting PGCN = %d\n",pgcN); + (vm->state).pgcN = pgcN; (vm->state).pgN = 1; if((vm->state).domain == VTS_DOMAIN) @@ -1818,6 +1832,11 @@ /* * $Log$ + * Revision 1.54 2003/04/06 10:59:28 jcdutton + * Return details about menu number in dvdnav_current_title_info() + * If title = 0, we are in menu, and part gives us what menu number. + * If title > 0, we are in a title. + * * Revision 1.53 2003/04/05 13:11:13 jcdutton * Minor changes. * diff -r a68751e6e84f -r 7094c8661c05 vm.h --- a/vm.h Sat Apr 05 21:23:02 2003 +0000 +++ b/vm.h Sun Apr 06 10:59:28 2003 +0000 @@ -47,6 +47,7 @@ domain_t domain; int vtsN; /* 0 is vmgm? */ pgc_t *pgc; /* either this or 'int pgcN' is enough? */ + int pgcN; /* but provide pgcN for quick lookup */ int pgN; /* is this needed? can allways fid pgN from cellN? */ int cellN; int32_t cell_restart; /* get cell to restart */ @@ -151,6 +152,7 @@ int vm_exec_cmd(vm_t *vm, vm_cmd_t *cmd); /* getting information */ +int vm_get_current_menu(vm_t *vm, int *menuid); int vm_get_current_title_part(vm_t *vm, int *title_result, int *part_result); int vm_get_audio_stream(vm_t *vm, int audioN); int vm_get_subp_stream(vm_t *vm, int subpN, int mode);