From 0de3094950661600a9984075709fcde19831fc7a Mon Sep 17 00:00:00 2001 From: Jan Schmidt Date: Tue, 20 May 2008 10:42:33 +0000 Subject: gst/videomixer/videomixer.*: Instead of a random number for the request pad id's, use a counter. Original commit message from CVS: * gst/videomixer/videomixer.c: * gst/videomixer/videomixer.h: Instead of a random number for the request pad id's, use a counter. Register the videomixerpad class from the element's class_init where it's safer, and allows the docs generator to scan it. --- gst/videomixer/videomixer.c | 12 +++++++++--- gst/videomixer/videomixer.h | 3 +++ 2 files changed, 12 insertions(+), 3 deletions(-) (limited to 'gst/videomixer') diff --git a/gst/videomixer/videomixer.c b/gst/videomixer/videomixer.c index a25775d2..2df7464e 100644 --- a/gst/videomixer/videomixer.c +++ b/gst/videomixer/videomixer.c @@ -57,7 +57,6 @@ #include #include -#include #include #include "videomixer.h" @@ -500,6 +499,9 @@ gst_videomixer_class_init (GstVideoMixerClass * klass) GST_DEBUG_FUNCPTR (gst_videomixer_release_pad); gstelement_class->change_state = GST_DEBUG_FUNCPTR (gst_videomixer_change_state); + + /* Register the pad class */ + (void) (GST_TYPE_VIDEO_MIXER_PAD); } static void @@ -532,6 +534,8 @@ gst_videomixer_reset (GstVideoMixer * mix) gst_videomixer_collect_free (data); walk = g_slist_next (walk); } + + mix->next_sinkpad = 0; } static void @@ -622,11 +626,13 @@ gst_videomixer_request_new_pad (GstElement * element, GstVideoMixerCollect *mixcol = NULL; if (req_name == NULL || strlen (req_name) < 6) { - /* no name given when requesting the pad, use random serial number */ - serial = rand (); + /* no name given when requesting the pad, use next available int */ + serial = mix->next_sinkpad++; } else { /* parse serial number from requested padname */ serial = atoi (&req_name[5]); + if (serial >= mix->next_sinkpad) + mix->next_sinkpad = serial + 1; } /* create new pad with the name */ name = g_strdup_printf ("sink_%d", serial); diff --git a/gst/videomixer/videomixer.h b/gst/videomixer/videomixer.h index 102d3e16..81f6d804 100644 --- a/gst/videomixer/videomixer.h +++ b/gst/videomixer/videomixer.h @@ -87,6 +87,9 @@ struct _GstVideoMixer gint fps_n; gint fps_d; + + /* Next available sinkpad index */ + gint next_sinkpad; }; struct _GstVideoMixerClass -- cgit