OSDN Git Service

WinGui:
[handbrake-jp/handbrake-jp-git.git] / contrib / libdvdnav / A07-missing-menu.patch
index 078f474..7f03559 100644 (file)
@@ -1,6 +1,6 @@
 diff -Naur libdvdnav.orig/src/vm/vm.c libdvdnav/src/vm/vm.c
 --- libdvdnav.orig/src/vm/vm.c 2009-10-29 09:10:44.836643320 -0700
-+++ libdvdnav/src/vm/vm.c      2009-11-16 11:10:07.527247268 -0800
++++ libdvdnav/src/vm/vm.c      2009-11-27 11:32:47.475322754 -0800
 @@ -585,6 +585,9 @@
      switch(menuid) {
      case DVD_MENU_Title:
@@ -29,7 +29,43 @@ diff -Naur libdvdnav.orig/src/vm/vm.c libdvdnav/src/vm/vm.c
    return 0;
  }
  
-@@ -1488,6 +1495,10 @@
+@@ -1412,8 +1419,9 @@
+       if(link_values.data2 != 0)
+       (vm->state).HL_BTNN_REG = link_values.data2 << 10;
+       if(!set_VTS_PTT(vm, (vm->state).vtsN, (vm->state).VTS_TTN_REG, link_values.data1))
+-      assert(0);
+-      link_values = play_PG(vm);
++        link_values.command = Exit;
++      else
++        link_values = play_PG(vm);
+       break;
+     case LinkPGN:
+       /* Link to Program Number:data1 */
+@@ -1458,8 +1466,9 @@
+       /* Set SPRM1 and SPRM2 */
+       assert((vm->state).domain == VTSM_DOMAIN || (vm->state).domain == VTS_DOMAIN); /* ?? */
+       if(!set_VTS_TT(vm, (vm->state).vtsN, link_values.data1))
+-      assert(0);
+-      link_values = play_PGC(vm);
++        link_values.command = Exit;
++      else
++        link_values = play_PGC(vm);
+       break;
+     case JumpVTS_PTT:
+       /* Jump to Part:data2 of Title:data1 in same VTS Title Domain */
+@@ -1469,8 +1478,9 @@
+       /* Set SPRM1 and SPRM2 */
+       assert((vm->state).domain == VTSM_DOMAIN || (vm->state).domain == VTS_DOMAIN); /* ?? */
+       if(!set_VTS_PTT(vm, (vm->state).vtsN, link_values.data1, link_values.data2))
+-      assert(0);
+-      link_values = play_PGC_PG(vm, (vm->state).pgN);
++        link_values.command = Exit;
++      else
++        link_values = play_PGC_PG(vm, (vm->state).pgN);
+       break;
+     case JumpSS_FP:
+@@ -1488,6 +1498,10 @@
        /* Allowed from anywhere except the VTS Title domain */
        /* Stop SPRM9 Timer and any GPRM counters */
        assert((vm->state).domain != VTS_DOMAIN); /* ?? */
@@ -40,7 +76,7 @@ diff -Naur libdvdnav.orig/src/vm/vm.c libdvdnav/src/vm/vm.c
        (vm->state).domain = VMGM_DOMAIN;
        if(!set_MENU(vm, link_values.data1))
        assert(0);
-@@ -1504,14 +1515,22 @@
+@@ -1504,14 +1518,22 @@
        if (link_values.data1 != (vm->state).vtsN) {
          /* the normal case */
          assert((vm->state).domain == VMGM_DOMAIN || (vm->state).domain == FP_DOMAIN); /* ?? */
@@ -64,7 +100,7 @@ diff -Naur libdvdnav.orig/src/vm/vm.c libdvdnav/src/vm/vm.c
          (vm->state).domain = VTSM_DOMAIN;
        }
        } else {
-@@ -1533,6 +1552,10 @@
+@@ -1533,6 +1555,10 @@
        /* set_PGCN:data1 */
        /* Stop SPRM9 Timer and any GPRM counters */
        assert((vm->state).domain != VTS_DOMAIN); /* ?? */
@@ -75,7 +111,7 @@ diff -Naur libdvdnav.orig/src/vm/vm.c libdvdnav/src/vm/vm.c
        (vm->state).domain = VMGM_DOMAIN;
        if(!set_PGCN(vm, link_values.data1))
        assert(0);
-@@ -1552,6 +1575,10 @@
+@@ -1552,6 +1578,10 @@
        /* set_RSMinfo:data2 */
        assert((vm->state).domain == VTS_DOMAIN); /* ?? */
        /* Must be called before domain is changed */
@@ -86,7 +122,7 @@ diff -Naur libdvdnav.orig/src/vm/vm.c libdvdnav/src/vm/vm.c
        set_RSMinfo(vm, link_values.data2, /* We dont have block info */ 0);
        (vm->state).domain = VMGM_DOMAIN;
        if(!set_MENU(vm, link_values.data1))
-@@ -1563,6 +1590,10 @@
+@@ -1563,6 +1593,10 @@
        /* set_RSMinfo:data2 */
        assert((vm->state).domain == VTS_DOMAIN); /* ?? */
        /* Must be called before domain is changed */
@@ -97,7 +133,7 @@ diff -Naur libdvdnav.orig/src/vm/vm.c libdvdnav/src/vm/vm.c
        set_RSMinfo(vm, link_values.data2, /* We dont have block info */ 0);
        (vm->state).domain = VTSM_DOMAIN;
        if(!set_MENU(vm, link_values.data1))
-@@ -1574,6 +1605,10 @@
+@@ -1574,6 +1608,10 @@
        /* set_RSMinfo:data2 */
        assert((vm->state).domain == VTS_DOMAIN); /* ?? */
        /* Must be called before domain is changed */
@@ -108,3 +144,14 @@ diff -Naur libdvdnav.orig/src/vm/vm.c libdvdnav/src/vm/vm.c
        set_RSMinfo(vm, link_values.data2, /* We dont have block info */ 0);
        (vm->state).domain = VMGM_DOMAIN;
        if(!set_PGCN(vm, link_values.data1))
+@@ -1634,7 +1672,9 @@
+   (vm->state).TT_PGCN_REG = pgcN;
+   (vm->state).PTTN_REG    = part;
+   (vm->state).TTN_REG     = get_TT(vm, vtsN, vts_ttn);
+-  assert( (vm->state.TTN_REG) != 0 );
++  if( (vm->state.TTN_REG) == 0 )
++    return 0;
++
+   (vm->state).VTS_TTN_REG = vts_ttn;
+   (vm->state).vtsN        = vtsN;  /* Not sure about this one. We can get to it easily from TTN_REG */
+   /* Any other registers? */