gst/playback/gstqueue2.c: Fix a division by zero when the max percent is <= 0. Fixes...
authorWim Taymans <wim.taymans@gmail.com>
Tue, 12 Jun 2007 08:38:06 +0000 (08:38 +0000)
committerWim Taymans <wim.taymans@gmail.com>
Tue, 12 Jun 2007 08:38:06 +0000 (08:38 +0000)
Original commit message from CVS:
Patches by: Thiago Sousa Santos <thiagossantos at gmail dot com>
* gst/playback/gstqueue2.c: (update_buffering),
(gst_queue_locked_enqueue):
Fix a division by zero when the max percent is <= 0. Fixes #446572.
also update the buffering status when receiving events. Fixes #446551.

ChangeLog
gst/playback/gstqueue2.c

index 2147e89..193edd4 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2007-06-12  Wim Taymans  <wim@fluendo.com>
+
+       Patches by: Thiago Sousa Santos <thiagossantos at gmail dot com>
+
+       * gst/playback/gstqueue2.c: (update_buffering),
+       (gst_queue_locked_enqueue):
+       Fix a division by zero when the max percent is <= 0. Fixes #446572.
+       also update the buffering status when receiving events. Fixes #446551.
+
 2007-06-11  Wim Taymans  <wim@fluendo.com>
 
        Based on patch by: Thiago Sousa Santos <thiagossantos at gmail dot com>
index bf52907..d512d80 100644 (file)
@@ -642,7 +642,7 @@ update_buffering (GstQueue * queue)
   gint percent;
   gboolean post = FALSE;
 
-  if (!queue->use_buffering)
+  if (!queue->use_buffering || queue->high_percent <= 0)
     return;
 
 #define GET_PERCENT(format) ((queue->max_level.format) > 0 ? \
@@ -997,8 +997,6 @@ gst_queue_locked_enqueue (GstQueue * queue, gpointer item)
     apply_buffer (queue, buffer, &queue->sink_segment);
     /* update the byterate stats */
     update_rates (queue);
-    /* update the buffering status */
-    update_buffering (queue);
 
     if (QUEUE_IS_USING_TEMP_FILE (queue)) {
       gst_queue_write_buffer_to_file (queue, buffer);
@@ -1039,9 +1037,14 @@ gst_queue_locked_enqueue (GstQueue * queue, gpointer item)
     item = NULL;
   }
 
-  if (!QUEUE_IS_USING_TEMP_FILE (queue) && item)
-    g_queue_push_tail (queue->queue, item);
-  GST_QUEUE_SIGNAL_ADD (queue);
+  if (item) {
+    /* update the buffering status */
+    update_buffering (queue);
+
+    if (!QUEUE_IS_USING_TEMP_FILE (queue))
+      g_queue_push_tail (queue->queue, item);
+    GST_QUEUE_SIGNAL_ADD (queue);
+  }
 
   return;