diff --git a/ChangeLog b/ChangeLog index ec3954747b..d0113fd8fa 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2008-05-20 Jan Schmidt + + * 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. + 2008-05-20 Wim Taymans * gst/smpte/Makefile.am: diff --git a/gst/videomixer/videomixer.c b/gst/videomixer/videomixer.c index a25775d26b..2df7464e32 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 102d3e16f5..81f6d8041b 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