media/liboggplay/bug515217.patch
author Dan Witte <dwitte@mozilla.com>
Fri, 02 Apr 2010 13:07:02 -0700
changeset 40446 d052f11b495bfc278deed384c40dcc17f95f0398
parent 33855 03cf4d377f0392d3597cc0442c95855ad9fdc6b3
permissions -rw-r--r--
Bug 538324 - Move ctypes into js/src. Part 5: Remove nsILocalFile option, and corresponding XPCOM dependency, for ctypes.open(). r=jorendorff

diff --git a/media/liboggplay/src/liboggplay/oggplay.c b/media/liboggplay/src/liboggplay/oggplay.c
--- a/media/liboggplay/src/liboggplay/oggplay.c
+++ b/media/liboggplay/src/liboggplay/oggplay.c
@@ -746,29 +746,27 @@ read_more_data:
         * set all of the tracks to inactive
         */
         for (i = 0; i < me->num_tracks; i++) {
           me->decode_data[i]->active = 0;
         }
         me->active_tracks = 0;
 
         if (info != NULL) {
+          /* ensure all tracks have their final data packet set to end_of_stream */
+          OggPlayCallbackInfo *p = info[0];
+          for (i = 0; i < me->num_tracks; i++) {
+            p->stream_info = OGGPLAY_STREAM_LAST_DATA;
+            p++;
+          }
+
           me->callback (me, num_records, info, me->callback_user_ptr);
           oggplay_callback_info_destroy(me, info);
         }
 
-        /*
-        * ensure all tracks have their final data packet set to end_of_stream
-        * But skip doing this if we're shutting down --- me->buffer may not
-        * be in a safe state.
-        */
-        if (me->buffer != NULL && !me->shutdown) {
-          oggplay_buffer_set_last_data(me, me->buffer);
-        }
-
         /* we reached the end of the stream */
         return E_OGGPLAY_OK;
               
       case OGGZ_ERR_HOLE_IN_DATA:
         /* there was a whole in the data */
         return E_OGGPLAY_BAD_INPUT;
 
       case OGGZ_ERR_STOP_ERR:
diff --git a/media/liboggplay/src/liboggplay/oggplay_buffer.c b/media/liboggplay/src/liboggplay/oggplay_buffer.c
--- a/media/liboggplay/src/liboggplay/oggplay_buffer.c
+++ b/media/liboggplay/src/liboggplay/oggplay_buffer.c
@@ -138,38 +138,16 @@ oggplay_buffer_is_full(volatile OggPlayB
       buffer->buffer_list[WRAP_INC(buffer->last_filled, buffer->buffer_size)]
       !=
       NULL
     )
   );
 
 }
 
-void
-oggplay_buffer_set_last_data(OggPlay *me, volatile OggPlayBuffer *buffer) 
-{
-
-  int                   i;
-  OggPlayCallbackInfo   *p;
-
-  /*
-   * we're at last data before we've even started!
-   */
-  if (buffer->last_filled == -1) {
-    return;
-  }
-
-  p = (OggPlayCallbackInfo *)buffer->buffer_list[buffer->last_filled];
-
-  for (i = 0; i < me->num_tracks; i++) {
-    p->stream_info = OGGPLAY_STREAM_LAST_DATA;
-    p++;
-  }
-}
-
 int
 oggplay_buffer_callback(OggPlay *me, int tracks,
                         OggPlayCallbackInfo **track_info, void *user) {
 
   int                   i;
   int                   j;
   int                   k;
   OggPlayDataHeader  ** headers;
diff --git a/media/liboggplay/src/liboggplay/oggplay_buffer.h b/media/liboggplay/src/liboggplay/oggplay_buffer.h
--- a/media/liboggplay/src/liboggplay/oggplay_buffer.h
+++ b/media/liboggplay/src/liboggplay/oggplay_buffer.h
@@ -53,12 +53,9 @@ int
 oggplay_buffer_is_full(volatile OggPlayBuffer *buffer);
 
 void
 oggplay_buffer_shutdown(OggPlay *me, volatile OggPlayBuffer *buffer);
 
 void
 oggplay_buffer_prepare(OggPlay *me);
 
-void
-oggplay_buffer_set_last_data(OggPlay *me, volatile OggPlayBuffer *buffer);
-
 #endif