From 900066617c769337d0bb76d818a62d1a074c808a Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Thu, 17 Apr 2003 09:19:34 +0000 Subject: [PATCH] Remove dummy signals, add full signal. Original commit message from CVS: Remove dummy signals, add full signal. --- gst/gstqueue.c | 12 +++++++++--- gst/gstqueue.h | 3 +-- plugins/elements/gstqueue.c | 12 +++++++++--- plugins/elements/gstqueue.h | 3 +-- 4 files changed, 20 insertions(+), 10 deletions(-) diff --git a/gst/gstqueue.c b/gst/gstqueue.c index a2c56cd..683a996 100644 --- a/gst/gstqueue.c +++ b/gst/gstqueue.c @@ -1,6 +1,7 @@ /* GStreamer * Copyright (C) 1999,2000 Erik Walthinsen * 2000 Wim Taymans + * 2003 Colin Walters * * gstqueue.c: * @@ -51,8 +52,7 @@ GstElementDetails gst_queue_details = { /* Queue signals and args */ enum { - LOW_WATERMARK, - HIGH_WATERMARK, + FULL, LAST_SIGNAL }; @@ -111,7 +111,7 @@ queue_leaky_get_type(void) { } static GstElementClass *parent_class = NULL; -/* static guint gst_queue_signals[LAST_SIGNAL] = { 0 }; */ +static guint gst_queue_signals[LAST_SIGNAL] = { 0 }; GType gst_queue_get_type(void) @@ -147,6 +147,10 @@ gst_queue_class_init (GstQueueClass *klass) parent_class = g_type_class_ref (GST_TYPE_ELEMENT); + gst_queue_signals[FULL] = + g_signal_new ("full", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET (GstQueueClass, full), NULL, NULL, + g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_LEAKY, g_param_spec_enum ("leaky", "Leaky", "Where the queue leaks, if at all.", GST_TYPE_QUEUE_LEAKY, GST_QUEUE_NO_LEAK, G_PARAM_READWRITE)); @@ -348,6 +352,8 @@ restart: GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "adding buffer %p of size %d",buf,GST_BUFFER_SIZE(buf)); if (queue->level_buffers == queue->size_buffers) { + g_signal_emit (G_OBJECT (queue), gst_queue_signals[FULL], 0); + /* if this is a leaky queue... */ if (queue->leaky) { /* FIXME don't want to leak events! */ diff --git a/gst/gstqueue.h b/gst/gstqueue.h index b329474..8438fe4 100644 --- a/gst/gstqueue.h +++ b/gst/gstqueue.h @@ -89,8 +89,7 @@ struct _GstQueueClass { GstElementClass parent_class; /* signal callbacks */ - void (*low_watermark) (GstQueue *queue, gint level); - void (*high_watermark) (GstQueue *queue, gint level); + void (*full) (GstQueue *queue); }; GType gst_queue_get_type (void); diff --git a/plugins/elements/gstqueue.c b/plugins/elements/gstqueue.c index a2c56cd..683a996 100644 --- a/plugins/elements/gstqueue.c +++ b/plugins/elements/gstqueue.c @@ -1,6 +1,7 @@ /* GStreamer * Copyright (C) 1999,2000 Erik Walthinsen * 2000 Wim Taymans + * 2003 Colin Walters * * gstqueue.c: * @@ -51,8 +52,7 @@ GstElementDetails gst_queue_details = { /* Queue signals and args */ enum { - LOW_WATERMARK, - HIGH_WATERMARK, + FULL, LAST_SIGNAL }; @@ -111,7 +111,7 @@ queue_leaky_get_type(void) { } static GstElementClass *parent_class = NULL; -/* static guint gst_queue_signals[LAST_SIGNAL] = { 0 }; */ +static guint gst_queue_signals[LAST_SIGNAL] = { 0 }; GType gst_queue_get_type(void) @@ -147,6 +147,10 @@ gst_queue_class_init (GstQueueClass *klass) parent_class = g_type_class_ref (GST_TYPE_ELEMENT); + gst_queue_signals[FULL] = + g_signal_new ("full", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET (GstQueueClass, full), NULL, NULL, + g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_LEAKY, g_param_spec_enum ("leaky", "Leaky", "Where the queue leaks, if at all.", GST_TYPE_QUEUE_LEAKY, GST_QUEUE_NO_LEAK, G_PARAM_READWRITE)); @@ -348,6 +352,8 @@ restart: GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "adding buffer %p of size %d",buf,GST_BUFFER_SIZE(buf)); if (queue->level_buffers == queue->size_buffers) { + g_signal_emit (G_OBJECT (queue), gst_queue_signals[FULL], 0); + /* if this is a leaky queue... */ if (queue->leaky) { /* FIXME don't want to leak events! */ diff --git a/plugins/elements/gstqueue.h b/plugins/elements/gstqueue.h index b329474..8438fe4 100644 --- a/plugins/elements/gstqueue.h +++ b/plugins/elements/gstqueue.h @@ -89,8 +89,7 @@ struct _GstQueueClass { GstElementClass parent_class; /* signal callbacks */ - void (*low_watermark) (GstQueue *queue, gint level); - void (*high_watermark) (GstQueue *queue, gint level); + void (*full) (GstQueue *queue); }; GType gst_queue_get_type (void); -- 2.7.4