gst/videomixer/videomixer.*: Instead of a random number for the request pad id's...
authorJan Schmidt <thaytan@mad.scientist.com>
Tue, 20 May 2008 10:42:33 +0000 (10:42 +0000)
committerJan Schmidt <thaytan@mad.scientist.com>
Tue, 20 May 2008 10:42:33 +0000 (10:42 +0000)
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.

ChangeLog
gst/videomixer/videomixer.c
gst/videomixer/videomixer.h

index ec3954747b52aab7551c7b0e3efc7b3534cdc030..d0113fd8fa4301af8bb1a6a5c9435dd843f53534 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2008-05-20  Jan Schmidt  <jan.schmidt@sun.com>
+
+       * 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  <wim.taymans@collabora.co.uk>
 
        * gst/smpte/Makefile.am:
index a25775d26b365925c76cb5442905bab9400f31a6..2df7464e328fb7184169fd73510525b936f44d0e 100644 (file)
@@ -57,7 +57,6 @@
 #include <gst/base/gstcollectpads.h>
 #include <gst/controller/gstcontroller.h>
 
-#include <stdlib.h>
 #include <string.h>
 
 #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);
index 102d3e16f5cddda177de566e1e7bd8a7faf9d946..81f6d8041b8ecf07261342bf785a8367a910d946 100644 (file)
@@ -87,6 +87,9 @@ struct _GstVideoMixer
 
   gint fps_n;
   gint fps_d;
+  
+  /* Next available sinkpad index */
+  gint next_sinkpad;
 };
 
 struct _GstVideoMixerClass