~ubuntu-branches/ubuntu/saucy/gstreamer0.10/saucy

« back to all changes in this revision

Viewing changes to plugins/elements/gstqueue.c

  • Committer: Package Import Robot
  • Author(s): Sebastian Dröge
  • Date: 2011-12-11 18:52:12 UTC
  • mfrom: (32.1.14 experimental)
  • Revision ID: package-import@ubuntu.com-20111211185212-3k215ps4qtyz2qa5
Tags: 0.10.35.2-1
* New upstream pre-release:
  + debian/control.in:
    - Build-depend on GLib >= 2.24.
  + debian/patches/99_ltmain_as-needed.patch:
    - Refreshed to apply cleanly again.
  + debian/libgstreamer.symbols:
    - Update symbols file with new API.
* debian/rules:
  + Remove all dependency_libs from the .la files (Closes: #633319).
* debian/control.in:
  + Put GI package into section introspection.
* debian/compat,
  debian/control.in,
  debian/gir1.2-gstreamer.install,
  debian/libgstreamer-dev.install,
  debian/libgstreamer.install,
  debian/patches/79_multiarch-backwards-compat.patch,
  debian/patches/80_ia32-hack.patch,
  debian/rules:
  + Transition package to multi-arch (Closes: #647481).
    Patch taken from the Ubuntu package.

Show diffs side-by-side

added added

removed removed

Lines of Context:
61
61
#include "gstqueue.h"
62
62
 
63
63
#include "../../gst/gst-i18n-lib.h"
 
64
#include "../../gst/glib-compat-private.h"
64
65
 
65
66
static GstStaticPadTemplate sinktemplate = GST_STATIC_PAD_TEMPLATE ("sink",
66
67
    GST_PAD_SINK,
91
92
                      queue->cur_level.time, \
92
93
                      queue->min_threshold.time, \
93
94
                      queue->max_size.time, \
94
 
                      queue->queue->length)
 
95
                      queue->queue.length)
95
96
 
96
97
/* Queue signals and args */
97
98
enum
430
431
  queue->qlock = g_mutex_new ();
431
432
  queue->item_add = g_cond_new ();
432
433
  queue->item_del = g_cond_new ();
433
 
  queue->queue = g_queue_new ();
 
434
 
 
435
  g_queue_init (&queue->queue);
434
436
 
435
437
  queue->sinktime = GST_CLOCK_TIME_NONE;
436
438
  queue->srctime = GST_CLOCK_TIME_NONE;
448
450
static void
449
451
gst_queue_finalize (GObject * object)
450
452
{
 
453
  GstMiniObject *data;
451
454
  GstQueue *queue = GST_QUEUE (object);
452
455
 
453
456
  GST_DEBUG_OBJECT (queue, "finalizing queue");
454
457
 
455
 
  while (!g_queue_is_empty (queue->queue)) {
456
 
    GstMiniObject *data = g_queue_pop_head (queue->queue);
457
 
 
 
458
  while ((data = g_queue_pop_head (&queue->queue)))
458
459
    gst_mini_object_unref (data);
459
 
  }
460
 
  g_queue_free (queue->queue);
 
460
 
 
461
  g_queue_clear (&queue->queue);
461
462
  g_mutex_free (queue->qlock);
462
463
  g_cond_free (queue->item_add);
463
464
  g_cond_free (queue->item_del);
668
669
static void
669
670
gst_queue_locked_flush (GstQueue * queue)
670
671
{
671
 
  while (!g_queue_is_empty (queue->queue)) {
672
 
    GstMiniObject *data = g_queue_pop_head (queue->queue);
 
672
  GstMiniObject *data;
673
673
 
 
674
  while ((data = g_queue_pop_head (&queue->queue))) {
674
675
    /* Then lose another reference because we are supposed to destroy that
675
676
       data when flushing */
676
677
    gst_mini_object_unref (data);
701
702
  queue->cur_level.bytes += GST_BUFFER_SIZE (buffer);
702
703
  apply_buffer (queue, buffer, &queue->sink_segment, TRUE, TRUE);
703
704
 
704
 
  g_queue_push_tail (queue->queue, item);
 
705
  g_queue_push_tail (&queue->queue, item);
705
706
  GST_QUEUE_SIGNAL_ADD (queue);
706
707
}
707
708
 
722
723
    case GST_EVENT_NEWSEGMENT:
723
724
      apply_segment (queue, event, &queue->sink_segment, TRUE);
724
725
      /* if the queue is empty, apply sink segment on the source */
725
 
      if (queue->queue->length == 0) {
 
726
      if (queue->queue.length == 0) {
726
727
        GST_CAT_LOG_OBJECT (queue_dataflow, queue, "Apply segment on srcpad");
727
728
        apply_segment (queue, event, &queue->src_segment, FALSE);
728
729
        queue->newseg_applied_to_src = TRUE;
735
736
      break;
736
737
  }
737
738
 
738
 
  g_queue_push_tail (queue->queue, item);
 
739
  g_queue_push_tail (&queue->queue, item);
739
740
  GST_QUEUE_SIGNAL_ADD (queue);
740
741
}
741
742
 
745
746
{
746
747
  GstMiniObject *item;
747
748
 
748
 
  item = g_queue_pop_head (queue->queue);
 
749
  item = g_queue_pop_head (&queue->queue);
749
750
  if (item == NULL)
750
751
    goto no_item;
751
752
 
902
903
static gboolean
903
904
gst_queue_is_empty (GstQueue * queue)
904
905
{
905
 
  if (queue->queue->length == 0)
 
906
  if (queue->queue.length == 0)
906
907
    return TRUE;
907
908
 
908
909
  /* It is possible that a max size is reached before all min thresholds are.