1 diff -Naur libdvdnav.orig/src/vm/vm.c libdvdnav/src/vm/vm.c
2 --- libdvdnav.orig/src/vm/vm.c 2009-10-29 09:10:44.836643320 -0700
3 +++ libdvdnav/src/vm/vm.c 2009-11-16 11:10:07.527247268 -0800
8 + if(vm->vmgi == NULL || vm->vmgi->pgci_ut == NULL) {
11 (vm->state).domain = VMGM_DOMAIN;
18 + if(vm->vtsi == NULL || vm->vtsi->pgci_ut == NULL) {
21 (vm->state).domain = VTSM_DOMAIN;
32 @@ -1488,6 +1495,10 @@
33 /* Allowed from anywhere except the VTS Title domain */
34 /* Stop SPRM9 Timer and any GPRM counters */
35 assert((vm->state).domain != VTS_DOMAIN); /* ?? */
36 + if(vm->vmgi == NULL || vm->vmgi->pgci_ut == NULL) {
37 + link_values.command = Exit;
40 (vm->state).domain = VMGM_DOMAIN;
41 if(!set_MENU(vm, link_values.data1))
43 @@ -1504,14 +1515,22 @@
44 if (link_values.data1 != (vm->state).vtsN) {
46 assert((vm->state).domain == VMGM_DOMAIN || (vm->state).domain == FP_DOMAIN); /* ?? */
47 - (vm->state).domain = VTSM_DOMAIN;
48 if (!ifoOpenNewVTSI(vm, vm->dvd, link_values.data1)) /* Also sets (vm->state).vtsN */
50 + if(vm->vtsi == NULL || vm->vtsi->pgci_ut == NULL) {
51 + link_values.command = Exit;
54 + (vm->state).domain = VTSM_DOMAIN;
56 /* This happens on some discs like "Captain Scarlet & the Mysterons" or
57 * the German RC2 of "Anatomie" in VTSM. */
58 assert((vm->state).domain == VTSM_DOMAIN ||
59 (vm->state).domain == VMGM_DOMAIN || (vm->state).domain == FP_DOMAIN); /* ?? */
60 + if(vm->vtsi == NULL || vm->vtsi->pgci_ut == NULL) {
61 + link_values.command = Exit;
64 (vm->state).domain = VTSM_DOMAIN;
67 @@ -1533,6 +1552,10 @@
69 /* Stop SPRM9 Timer and any GPRM counters */
70 assert((vm->state).domain != VTS_DOMAIN); /* ?? */
71 + if(vm->vmgi == NULL || vm->vmgi->pgci_ut == NULL) {
72 + link_values.command = Exit;
75 (vm->state).domain = VMGM_DOMAIN;
76 if(!set_PGCN(vm, link_values.data1))
78 @@ -1552,6 +1575,10 @@
79 /* set_RSMinfo:data2 */
80 assert((vm->state).domain == VTS_DOMAIN); /* ?? */
81 /* Must be called before domain is changed */
82 + if(vm->vmgi == NULL || vm->vmgi->pgci_ut == NULL) {
83 + link_values.command = Exit;
86 set_RSMinfo(vm, link_values.data2, /* We dont have block info */ 0);
87 (vm->state).domain = VMGM_DOMAIN;
88 if(!set_MENU(vm, link_values.data1))
89 @@ -1563,6 +1590,10 @@
90 /* set_RSMinfo:data2 */
91 assert((vm->state).domain == VTS_DOMAIN); /* ?? */
92 /* Must be called before domain is changed */
93 + if(vm->vtsi == NULL || vm->vtsi->pgci_ut == NULL) {
94 + link_values.command = Exit;
97 set_RSMinfo(vm, link_values.data2, /* We dont have block info */ 0);
98 (vm->state).domain = VTSM_DOMAIN;
99 if(!set_MENU(vm, link_values.data1))
100 @@ -1574,6 +1605,10 @@
101 /* set_RSMinfo:data2 */
102 assert((vm->state).domain == VTS_DOMAIN); /* ?? */
103 /* Must be called before domain is changed */
104 + if(vm->vmgi == NULL || vm->vmgi->pgci_ut == NULL) {
105 + link_values.command = Exit;
108 set_RSMinfo(vm, link_values.data2, /* We dont have block info */ 0);
109 (vm->state).domain = VMGM_DOMAIN;
110 if(!set_PGCN(vm, link_values.data1))