[gstreamermm] Plugins: Wrap new core plugins.



commit d1a6deab637e2d7331cf9eeefee28876688932a2
Author: José Alburquerque <jaalburqu svn gnome org>
Date:   Mon Apr 18 01:12:13 2011 -0400

    Plugins: Wrap new core plugins.
    
    	* configure.ac: Modify the format of the plugin definitions to include
    	the target .hg basename along with the plugin name because some
    	plugins (like the new input-selector and output-selector plugins) use
    	dashes in the plugin name while the target .hg filename generally does
    	not.
    	* gstreamer/src/filelist.am: Add the new funnel, inpput-selector,
    	output-selector and valve core plugins.
    	* gstreamer/src/Makefile.am: Adapt to the above change.
    
    	* gstreamer/src/gst_enums.defs:
    	* gstreamer/src/gst_enums.defs.patch: Update the enum defs patch and
    	regenerate the enum defs file for the enums of the new plugins.
    
    	* tools/extra_defs_gen/generate_defs_gst.cc:
    	* gstreamer/src/gst_signals.defs: Add the new plugins to the extra
    	defs generation utility and regenerate the extra defs file for the
    	properties and signals of the new plugins.
    
    	* tools/extra_defs_gen/generate_plugin_gmmproc_file.cc: Modified so
    	that there are no build errors if a signal name of a plugin happens to
    	be a C++ keyword (such as the "switch" signal of the input-selector
    	plugin).

 ChangeLog                                          |   27 +
 configure.ac                                       |  137 ++---
 gstreamer/src/Makefile.am                          |   14 +-
 gstreamer/src/filelist.am                          |   12 +-
 gstreamer/src/gst_enums.defs                       |  133 ++++-
 gstreamer/src/gst_enums.defs.patch                 |  260 ++------
 gstreamer/src/gst_signals.defs                     |  631 +++++++++++---------
 tools/extra_defs_gen/generate_defs_gst.cc          |    4 +
 .../extra_defs_gen/generate_plugin_gmmproc_file.cc |    4 +-
 9 files changed, 667 insertions(+), 555 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index c91adb0..8b37787 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,30 @@
+2011-04-18  José Alburquerque  <jaalburqu svn gnome org>
+
+	Plugins: Wrap new core plugins.
+
+	* configure.ac: Modify the format of the plugin definitions to include
+	the target .hg basename along with the plugin name because some
+	plugins (like the new input-selector and output-selector plugins) use
+	dashes in the plugin name while the target .hg filename generally does
+	not.
+	* gstreamer/src/filelist.am: Add the new funnel, inpput-selector,
+	output-selector and valve core plugins.
+	* gstreamer/src/Makefile.am: Adapt to the above change.
+
+	* gstreamer/src/gst_enums.defs:
+	* gstreamer/src/gst_enums.defs.patch: Update the enum defs patch and
+	regenerate the enum defs file for the enums of the new plugins.
+
+	* tools/extra_defs_gen/generate_defs_gst.cc:
+	* gstreamer/src/gst_signals.defs: Add the new plugins to the extra
+	defs generation utility and regenerate the extra defs file for the
+	properties and signals of the new plugins.
+
+	* tools/extra_defs_gen/generate_plugin_gmmproc_file.cc: Modified so
+	that there are no build errors if a signal name of a plugin happens to
+	be a C++ keyword (such as the "switch" signal of the input-selector
+	plugin).
+
 2011-04-17  José Alburquerque  <jaalburqu svn gnome org>
 
 	Plugin Generator: Use Glib::OptionContext instead of GOptionContext.
diff --git a/configure.ac b/configure.ac
index 5b941da..5247aa2 100644
--- a/configure.ac
+++ b/configure.ac
@@ -77,78 +77,73 @@ MM_ARG_WITH_TAGFILE_DOC([pangomm-1.4.tag], [pangomm-1.4])
 #########################################################################
 
 # To add a plugin, add the plugin definition, in the form of
-# "plugin=CppClassName" to the space-separated list of definitions below.
-# (Where "plugin" is the plugin name as recognized by gst-inspect and
-# "CppClassName" is the desired name of the C++ class.)
-#
-# Also add the target .hg file name to the plugins_hg variable in the
-# gstreamer/src/fileslist.am.  (That must be the same as "CppClassName" - all
-# in lowercase with a .hg extension).
-#
-# TODO: Include appsink and appsrc plug-ins in list below if they indeed are
-# plug-ins (see gst-plugins-base docs for details) and when they don't cause
-# gstreamermm initialization errors.
+# "hgfilebasename|plugin|CppClassName" to the space-separated list of
+# definitions below.  (Where "hgfilebasename" is the basename of the .hg file
 
 AC_SUBST([GSTREAMERMM_PLUGIN_DEFS], ["\
-adder=Adder \
-alsamixer=AlsaMixer \
-alsasink=AlsaSink \
-alsasrc=AlsaSrc \
-audioconvert=AudioConvert \
-audiorate=AudioRate \
-audioresample=AudioResample \
-audiotestsrc=AudioTestSrc \
-capsfilter=CapsFilter \
-cdparanoiasrc=CdParanoiaSrc \
-clockoverlay=ClockOverlay \
-decodebin2=DecodeBin2 \
-decodebin=DecodeBin \
-fakesink=FakeSink \
-fakesrc=FakeSrc \
-fdsink=FdSink \
-fdsrc=FdSrc \
-ffmpegcolorspace=FfmpegColorSpace \
-filesink=FileSink \
-filesrc=FileSrc \
-gdpdepay=GDPDepay \
-gdppay=GDPPay \
-giosink=GioSink \
-giosrc=GioSrc \
-giostreamsink=GioStreamSink \
-giostreamsrc=GioStreamSrc \
-identity=Identity \
-multifdsink=MultiFdSink \
-multiqueue=MultiQueue \
-oggdemux=OggDemux \
-oggmux=OggMux \
-playbin2=PlayBin2 \
-playbin=PlayBin \
-queue=Queue \
-queue2=Queue2 \
-subtitleoverlay=SubtitleOverlay \
-tcpclientsink=TCPClientSink \
-tcpclientsrc=TCPClientSrc \
-tcpserversink=TcpServerSink \
-tcpserversrc=TCPServerSrc \
-tee=Tee \
-textoverlay=TextOverlay \
-textrender=TextRender \
-theoradec=TheoraDec \
-theoraenc=TheoraEnc \
-theoraparse=TheoraParse \
-timeoverlay=TimeOverlay \
-typefind=TypeFindElement \
-uridecodebin=UriDecodeBin \
-videorate=VideoRate \
-videoscale=VideoScale \
-videotestsrc=VideoTestSrc \
-volume=Volume \
-vorbisdec=VorbisDec \
-vorbisenc=VorbisEnc \
-vorbisparse=VorbisParse \
-vorbistag=VorbisTag \
-ximagesink=XImageSink \
-xvimagesink=XvImageSink
+adder|adder|Adder \
+alsamixer|alsamixer|AlsaMixer \
+alsasink|alsasink|AlsaSink \
+alsasrc|alsasrc|AlsaSrc \
+audioconvert|audioconvert|AudioConvert \
+audiorate|audiorate|AudioRate \
+audioresample|audioresample|AudioResample \
+audiotestsrc|audiotestsrc|AudioTestSrc \
+capsfilter|capsfilter|CapsFilter \
+cdparanoiasrc|cdparanoiasrc|CdParanoiaSrc \
+clockoverlay|clockoverlay|ClockOverlay \
+decodebin2|decodebin2|DecodeBin2 \
+decodebin|decodebin|DecodeBin \
+fakesink|fakesink|FakeSink \
+fakesrc|fakesrc|FakeSrc \
+fdsink|fdsink|FdSink \
+fdsrc|fdsrc|FdSrc \
+ffmpegcolorspace|ffmpegcolorspace|FfmpegColorSpace \
+filesink|filesink|FileSink \
+filesrc|filesrc|FileSrc \
+funnel|funnel|Funnel \
+gdpdepay|gdpdepay|GDPDepay \
+gdppay|gdppay|GDPPay \
+giosink|giosink|GioSink \
+giosrc|giosrc|GioSrc \
+giostreamsink|giostreamsink|GioStreamSink \
+giostreamsrc|giostreamsrc|GioStreamSrc \
+identity|identity|Identity \
+inputselector|input-selector|InputSelector \
+multifdsink|multifdsink|MultiFdSink \
+multiqueue|multiqueue|MultiQueue \
+oggdemux|oggdemux|OggDemux \
+oggmux|oggmux|OggMux \
+outputselector|output-selector|OutputSelector \
+playbin2|playbin2|PlayBin2 \
+playbin|playbin|PlayBin \
+queue|queue|Queue \
+queue2|queue2|Queue2 \
+subtitleoverlay|subtitleoverlay|SubtitleOverlay \
+tcpclientsink|tcpclientsink|TCPClientSink \
+tcpclientsrc|tcpclientsrc|TCPClientSrc \
+tcpserversink|tcpserversink|TcpServerSink \
+tcpserversrc|tcpserversrc|TCPServerSrc \
+tee|tee|Tee \
+textoverlay|textoverlay|TextOverlay \
+textrender|textrender|TextRender \
+theoradec|theoradec|TheoraDec \
+theoraenc|theoraenc|TheoraEnc \
+theoraparse|theoraparse|TheoraParse \
+timeoverlay|timeoverlay|TimeOverlay \
+typefindelement|typefind|TypeFindElement \
+uridecodebin|uridecodebin|UriDecodeBin \
+valve|valve|Valve \
+videorate|videorate|VideoRate \
+videoscale|videoscale|VideoScale \
+videotestsrc|videotestsrc|VideoTestSrc \
+volume|volume|Volume \
+vorbisdec|vorbisdec|VorbisDec \
+vorbisenc|vorbisenc|VorbisEnc \
+vorbisparse|vorbisparse|VorbisParse \
+vorbistag|vorbistag|VorbisTag \
+ximagesink|ximagesink|XImageSink \
+xvimagesink|xvimagesink|XvImageSink
 "])
 
 # Check for the existence of the plug-ins.  Note that this check doesn't
@@ -164,7 +159,7 @@ AS_IF([test "x$USE_MAINTAINER_MODE" != xno],
   do
     # Extract plugin name and run gst-inspect to check whether the plugin
     # is installed on the build system.
-    gstmm_plugin_name=`[expr "X$gstmm_plugin_def" : 'X\([^=]*\)' 2>&]AS_MESSAGE_LOG_FD`
+    gstmm_plugin_name=`[expr "X$gstmm_plugin_def" : 'X[a-z][a-z0-9]\+|\([^|]*\)' 2>&]AS_MESSAGE_LOG_FD`
     AS_IF([$GST_INSPECT "$gstmm_plugin_name" >/dev/null 2>&AS_MESSAGE_LOG_FD],,
           [AC_MSG_FAILURE([[The gstreamer plug-in '$gstmm_plugin_name' does not exist.
 If you built gst-plugins-base from source code then you might need to
diff --git a/gstreamer/src/Makefile.am b/gstreamer/src/Makefile.am
index f79441b..2496e0b 100644
--- a/gstreamer/src/Makefile.am
+++ b/gstreamer/src/Makefile.am
@@ -33,8 +33,8 @@ generate_plugin_dependencies = \
 	$(codegen_srcdir)/extra_defs_gen/generate_plugin_gmmproc_file.cc \
 	$(addprefix $(codegen_m4_srcdir)/,$(files_plugin_m4))
 
-target_plugin     = $(patsubst %element,%,$(basename $(notdir $@)))
-target_plugin_def = $(subst =, ,$(filter $(target_plugin)=%,$(GSTREAMERMM_PLUGIN_DEFS)))
+target_hg_basename = $(basename $(notdir $@))
+target_plugin_and_classname  = $(wordlist 2,3,$(subst |, ,$(filter $(target_hg_basename)|%,$(GSTREAMERMM_PLUGIN_DEFS))))
 
 $(binding_outputdir)/gst_wrap_init.cc: $(generate_gst_wrap_init) $(binding_relfiles_hg)
 	$(AM_V_GEN)$(PERL) -- $(generate_gst_wrap_init) $(wrap_init_flags) \
@@ -44,12 +44,14 @@ $(binding_outputdir)/gst_wrap_init.cc: $(generate_gst_wrap_init) $(binding_relfi
 # through m4 using the macros in tools/m4/ctocpp_base.m4 which then produces
 # the final .ccg file.
 $(addprefix $(srcdir)/,$(plugins_ccg)): $(generate_plugin_dependencies)
-	$(AM_V_GEN)$(generate_plugin_gmmproc_file) --ccg $(target_plugin_def) \
-	 | $(M4) -I $(codegen_m4_srcdir) >$@
+	$(AM_V_GEN)$(generate_plugin_gmmproc_file) --ccg \
+	  $(target_plugin_and_classname) | $(M4) -I $(codegen_m4_srcdir) >$@
 
 # This is to generate plugin .hg files.  The generated .hg file is piped
 # through m4 using the macros in tools/m4/ctocpp_base.m4 which then produces
 # the final .hg file.
 $(addprefix $(srcdir)/,$(plugins_hg)): %.hg: %.ccg $(generate_plugin_dependencies)
-	$(AM_V_GEN)$(generate_plugin_gmmproc_file) --hg $(target_plugin_def) \
-	 | $(M4) -I $(codegen_m4_srcdir) >$@
+	@echo Plugin def: $(target_plugin_and_classname)
+	$(AM_V_GEN)$(generate_plugin_gmmproc_file) \
+	  --hg $(target_plugin_and_classname) | $(M4) -I $(codegen_m4_srcdir) \
+	  >$@
diff --git a/gstreamer/src/filelist.am b/gstreamer/src/filelist.am
index c3bb3a9..e0353e9 100644
--- a/gstreamer/src/filelist.am
+++ b/gstreamer/src/filelist.am
@@ -11,9 +11,11 @@ files_defs =                    \
         gst_docs_override.xml
 
 # To add a plugin, add the plugin definition, in the form of
-# "plugin=CppClassName" to the GSTREAMERMM_PLUGIN_DEFS variable of the
-# configure.ac file.  (Where "plugin" is the plugin name as recognized by
-# gst-inspect and "CppClassName" is the desired name of the C++ class.)
+# "hgfilebasename|plugin|CppClassName" to the GSTREAMERMM_PLUGIN_DEFS variable
+# of the configure.ac file.  (Where "hgfilebasename" is the basename of the .hg
+# file (ie. without the .hg extension), "plugin" is the plugin name as
+# recognized by gst-inspect and "CppClassName" is the desired name of the C++
+# class.)
 #
 # Also add the target .hg file name to the the variable below.  (That must be
 # the same as "CppClassName" - all in lowercase with a .hg extension).  Make
@@ -43,6 +45,7 @@ plugins_hg =                    \
         ffmpegcolorspace.hg     \
         filesink.hg             \
         filesrc.hg              \
+        funnel.hg               \
         gdpdepay.hg             \
         gdppay.hg               \
         giosink.hg              \
@@ -50,10 +53,12 @@ plugins_hg =                    \
         giostreamsink.hg        \
         giostreamsrc.hg         \
         identity.hg             \
+        inputselector.hg        \
         multifdsink.hg          \
         multiqueue.hg           \
         oggdemux.hg             \
         oggmux.hg               \
+        outputselector.hg       \
         playbin2.hg             \
         playbin.hg              \
         queue.hg                \
@@ -72,6 +77,7 @@ plugins_hg =                    \
         timeoverlay.hg          \
         typefindelement.hg      \
         uridecodebin.hg         \
+        valve.hg                \
         videorate.hg            \
         videoscale.hg           \
         videotestsrc.hg         \
diff --git a/gstreamer/src/gst_enums.defs b/gstreamer/src/gst_enums.defs
index 13fdd70..90bf96f 100644
--- a/gstreamer/src/gst_enums.defs
+++ b/gstreamer/src/gst_enums.defs
@@ -21,6 +21,7 @@
 ;; Original typedef:
 ;; typedef enum {
 ;;   GST_BUFFER_FLAG_READONLY   = GST_MINI_OBJECT_FLAG_READONLY,
+;;   GST_BUFFER_FLAG_MEDIA4     = GST_MINI_OBJECT_FLAG_RESERVED1,
 ;;   GST_BUFFER_FLAG_PREROLL    = (GST_MINI_OBJECT_FLAG_LAST << 0),
 ;;   GST_BUFFER_FLAG_DISCONT    = (GST_MINI_OBJECT_FLAG_LAST << 1),
 ;;   GST_BUFFER_FLAG_IN_CAPS    = (GST_MINI_OBJECT_FLAG_LAST << 2),
@@ -37,6 +38,7 @@
   (c-name "GstBufferFlag")
   (values
     '("readonly" "GST_BUFFER_FLAG_READONLY" "GST_MINI_OBJECT_FLAG_READONLY")
+    '("media4" "GST_BUFFER_FLAG_MEDIA4" "GST_MINI_OBJECT_FLAG_RESERVED1")
     '("preroll" "GST_BUFFER_FLAG_PREROLL" "(GST_MINI_OBJECT_FLAG_LAST << 0)")
     '("discont" "GST_BUFFER_FLAG_DISCONT" "(GST_MINI_OBJECT_FLAG_LAST << 1)")
     '("in-caps" "GST_BUFFER_FLAG_IN_CAPS" "(GST_MINI_OBJECT_FLAG_LAST << 2)")
@@ -136,6 +138,21 @@
   )
 )
 
+;; Original typedef:
+;; typedef enum {
+;;   GST_CAPS_INTERSECT_ZIG_ZAG            =  0,
+;;   GST_CAPS_INTERSECT_FIRST              =  1
+;; } GstCapsIntersectMode;
+
+(define-enum-extended CapsIntersectMode
+  (in-module "Gst")
+  (c-name "GstCapsIntersectMode")
+  (values
+    '("zig-zag" "GST_CAPS_INTERSECT_ZIG_ZAG" "0")
+    '("first" "GST_CAPS_INTERSECT_FIRST" "1")
+  )
+)
+
 ;; From gstclock.h
 
 ;; Original typedef:
@@ -147,7 +164,8 @@
 ;;   GST_CLOCK_BUSY	=  3,
 ;;   GST_CLOCK_BADTIME	=  4,
 ;;   GST_CLOCK_ERROR	=  5,
-;;   GST_CLOCK_UNSUPPORTED	=  6
+;;   GST_CLOCK_UNSUPPORTED	=  6,
+;;   GST_CLOCK_DONE	=  7
 ;; } GstClockReturn;
 
 (define-enum-extended ClockReturn
@@ -161,6 +179,7 @@
     '("badtime" "GST_CLOCK_BADTIME" "4")
     '("error" "GST_CLOCK_ERROR" "5")
     '("unsupported" "GST_CLOCK_UNSUPPORTED" "6")
+    '("done" "GST_CLOCK_DONE" "7")
   )
 )
 
@@ -530,6 +549,23 @@
   )
 )
 
+;; Original typedef:
+;; typedef enum {
+;;   GST_QOS_TYPE_OVERFLOW        = 0,
+;;   GST_QOS_TYPE_UNDERFLOW       = 1,
+;;   GST_QOS_TYPE_THROTTLE        = 2
+;; } GstQOSType;
+
+(define-enum-extended QOSType
+  (in-module "Gst")
+  (c-name "GstQOSType")
+  (values
+    '("overflow" "GST_QOS_TYPE_OVERFLOW" "0")
+    '("underflow" "GST_QOS_TYPE_UNDERFLOW" "1")
+    '("throttle" "GST_QOS_TYPE_THROTTLE" "2")
+  )
+)
+
 ;; From gstformat.h
 
 ;; Original typedef:
@@ -820,6 +856,7 @@
 ;;   GST_MESSAGE_REQUEST_STATE     = (1 << 22),
 ;;   GST_MESSAGE_STEP_START        = (1 << 23),
 ;;   GST_MESSAGE_QOS               = (1 << 24),
+;;   GST_MESSAGE_PROGRESS          = (1 << 25),
 ;;   GST_MESSAGE_ANY               = ~0
 ;; } GstMessageType;
 
@@ -853,6 +890,7 @@
     '("request-state" "GST_MESSAGE_REQUEST_STATE" "(1 << 22)")
     '("step-start" "GST_MESSAGE_STEP_START" "(1 << 23)")
     '("qos" "GST_MESSAGE_QOS" "(1 << 24)")
+    '("progress" "GST_MESSAGE_PROGRESS" "(1 << 25)")
     '("any" "GST_MESSAGE_ANY" "0x0")
   )
 )
@@ -898,12 +936,34 @@
   )
 )
 
+;; Original typedef:
+;; typedef enum {
+;;   GST_PROGRESS_TYPE_START    = 0,
+;;   GST_PROGRESS_TYPE_CONTINUE = 1,
+;;   GST_PROGRESS_TYPE_COMPLETE = 2,
+;;   GST_PROGRESS_TYPE_CANCELED = 3,
+;;   GST_PROGRESS_TYPE_ERROR    = 4,
+;; } GstProgressType;
+
+(define-enum-extended ProgressType
+  (in-module "Gst")
+  (c-name "GstProgressType")
+  (values
+    '("start" "GST_PROGRESS_TYPE_START" "0")
+    '("continue" "GST_PROGRESS_TYPE_CONTINUE" "1")
+    '("complete" "GST_PROGRESS_TYPE_COMPLETE" "2")
+    '("canceled" "GST_PROGRESS_TYPE_CANCELED" "3")
+    '("error" "GST_PROGRESS_TYPE_ERROR" "4")
+  )
+)
+
 ;; From gstminiobject.h
 
 ;; Original typedef:
 ;; typedef enum
 ;; {
 ;;   GST_MINI_OBJECT_FLAG_READONLY = (1<<0),
+;;   GST_MINI_OBJECT_FLAG_RESERVED1 = (1<<1),
 ;;   /* padding */
 ;;   GST_MINI_OBJECT_FLAG_LAST = (1<<4)
 ;; } GstMiniObjectFlags;
@@ -913,6 +973,7 @@
   (c-name "GstMiniObjectFlags")
   (values
     '("readonly" "GST_MINI_OBJECT_FLAG_READONLY" "(1<<0)")
+    '("reserved1" "GST_MINI_OBJECT_FLAG_RESERVED1" "(1<<1)")
     '("last" "GST_MINI_OBJECT_FLAG_LAST" "(1<<4)")
   )
 )
@@ -1109,6 +1170,7 @@
 
 ;; Original typedef:
 ;; typedef enum {
+;;   /* FIXME0.11: this is not used and the purpose is unclear */
 ;;   GST_PAD_TEMPLATE_FIXED        = (GST_OBJECT_FLAG_LAST << 0),
 ;;   /* padding */
 ;;   GST_PAD_TEMPLATE_FLAG_LAST    = (GST_OBJECT_FLAG_LAST << 4)
@@ -1367,8 +1429,13 @@
 ;;   GST_QUARK_PROCESSED = 98,
 ;;   GST_QUARK_DROPPED = 99,
 ;;   GST_QUARK_BUFFERING_RANGES = 100,
+;;   GST_QUARK_MESSAGE_PROGRESS = 101,
+;;   GST_QUARK_CODE = 102,
+;;   GST_QUARK_TEXT = 103,
+;;   GST_QUARK_PERCENT = 104,
+;;   GST_QUARK_TIMEOUT = 105,
 ;; 
-;;   GST_QUARK_MAX = 101
+;;   GST_QUARK_MAX = 106
 ;; } GstQuarkId;
 
 (define-enum-extended QuarkId
@@ -1476,7 +1543,12 @@
     '("processed" "GST_QUARK_PROCESSED" "98")
     '("dropped" "GST_QUARK_DROPPED" "99")
     '("buffering-ranges" "GST_QUARK_BUFFERING_RANGES" "100")
-    '("max" "GST_QUARK_MAX" "101")
+    '("message-progress" "GST_QUARK_MESSAGE_PROGRESS" "101")
+    '("code" "GST_QUARK_CODE" "102")
+    '("text" "GST_QUARK_TEXT" "103")
+    '("percent" "GST_QUARK_PERCENT" "104")
+    '("timeout" "GST_QUARK_TIMEOUT" "105")
+    '("max" "GST_QUARK_MAX" "106")
   )
 )
 
@@ -1703,6 +1775,25 @@
   )
 )
 
+;; From gstbaseparse.h
+
+;; Original typedef:
+;; typedef enum {
+;;   GST_BASE_PARSE_FRAME_FLAG_NONE         = 0,
+;;   GST_BASE_PARSE_FRAME_FLAG_NO_FRAME     = (1 << 0),
+;;   GST_BASE_PARSE_FRAME_FLAG_CLIP         = (1 << 1)
+;; } GstBaseParseFrameFlags;
+
+(define-flags-extended BaseParseFrameFlags
+  (in-module "Gst")
+  (c-name "GstBaseParseFrameFlags")
+  (values
+    '("none" "GST_BASE_PARSE_FRAME_FLAG_NONE" "0x0")
+    '("no-frame" "GST_BASE_PARSE_FRAME_FLAG_NO_FRAME" "(1 << 0)")
+    '("clip" "GST_BASE_PARSE_FRAME_FLAG_CLIP" "(1 << 1)")
+  )
+)
+
 ;; From gstbasesrc.h
 
 ;; Original typedef:
@@ -3576,7 +3667,14 @@
 ;;   GST_VIDEO_FORMAT_RGB15,
 ;;   GST_VIDEO_FORMAT_BGR15,
 ;;   GST_VIDEO_FORMAT_UYVP,
-;;   GST_VIDEO_FORMAT_A420
+;;   GST_VIDEO_FORMAT_A420,
+;;   GST_VIDEO_FORMAT_RGB8_PALETTED,
+;;   GST_VIDEO_FORMAT_YUV9,
+;;   GST_VIDEO_FORMAT_YVU9,
+;;   GST_VIDEO_FORMAT_IYU1,
+;;   GST_VIDEO_FORMAT_ARGB64,
+;;   GST_VIDEO_FORMAT_AYUV64,
+;;   GST_VIDEO_FORMAT_r210
 ;; } GstVideoFormat;
 
 (define-enum-extended VideoFormat
@@ -3619,6 +3717,13 @@
     '("bgr15" "GST_VIDEO_FORMAT_BGR15" "33")
     '("uyvp" "GST_VIDEO_FORMAT_UYVP" "34")
     '("a420" "GST_VIDEO_FORMAT_A420" "35")
+    '("rgb8-paletted" "GST_VIDEO_FORMAT_RGB8_PALETTED" "36")
+    '("yuv9" "GST_VIDEO_FORMAT_YUV9" "37")
+    '("yvu9" "GST_VIDEO_FORMAT_YVU9" "38")
+    '("iyu1" "GST_VIDEO_FORMAT_IYU1" "39")
+    '("argb64" "GST_VIDEO_FORMAT_ARGB64" "40")
+    '("ayuv64" "GST_VIDEO_FORMAT_AYUV64" "41")
+    '("r210" "GST_VIDEO_FORMAT_r210" "42")
   )
 )
 
@@ -4499,7 +4604,8 @@
 ;;     GST_TEXT_OVERLAY_VALIGN_BASELINE,
 ;;     GST_TEXT_OVERLAY_VALIGN_BOTTOM,
 ;;     GST_TEXT_OVERLAY_VALIGN_TOP,
-;;     GST_TEXT_OVERLAY_VALIGN_POS
+;;     GST_TEXT_OVERLAY_VALIGN_POS,
+;;     GST_TEXT_OVERLAY_VALIGN_CENTER
 ;; } GstTextOverlayVAlign;
 
 (define-enum-extended TextOverlayVAlign
@@ -4510,6 +4616,7 @@
     '("bottom" "GST_TEXT_OVERLAY_VALIGN_BOTTOM" "1")
     '("top" "GST_TEXT_OVERLAY_VALIGN_TOP" "2")
     '("pos" "GST_TEXT_OVERLAY_VALIGN_POS" "3")
+    '("center" "GST_TEXT_OVERLAY_VALIGN_CENTER" "4")
   )
 )
 
@@ -4518,7 +4625,7 @@
 ;;     GST_TEXT_OVERLAY_HALIGN_LEFT,
 ;;     GST_TEXT_OVERLAY_HALIGN_CENTER,
 ;;     GST_TEXT_OVERLAY_HALIGN_RIGHT,
-;;     GST_TEXT_OVERLAY_HALIGN_TOP,
+;;     GST_TEXT_OVERLAY_HALIGN_UNUSED,
 ;;     GST_TEXT_OVERLAY_HALIGN_POS
 ;; } GstTextOverlayHAlign;
 
@@ -4529,7 +4636,7 @@
     '("left" "GST_TEXT_OVERLAY_HALIGN_LEFT" "0")
     '("center" "GST_TEXT_OVERLAY_HALIGN_CENTER" "1")
     '("right" "GST_TEXT_OVERLAY_HALIGN_RIGHT" "2")
-    '("top" "GST_TEXT_OVERLAY_HALIGN_TOP" "3")
+    '("unused" "GST_TEXT_OVERLAY_HALIGN_UNUSED" "3")
     '("pos" "GST_TEXT_OVERLAY_HALIGN_POS" "4")
   )
 )
@@ -4664,7 +4771,7 @@
 
 ;; Handwritten for CdParanoiaSrc plugin (values taken from output of
 ;; `gst-inspect cdparanoiasrc' -- "paranoia-mode" property information)
-(define-enum-extended GstCdParanoiaSrc
+(define-enum-extended CdParanoiaMode
   (in-module "Gst")
   (c-name "GstCdParanoiaMode")
   (values
@@ -4687,3 +4794,13 @@
     '("epoll" "GST_FD_SET_MODE_EPOLL" "2")
   )
 )
+;; Handwritten for OutputSelector plugin (taken from gstoutputselector.c):
+(define-enum-extended OutputSelectorPadNegotiationMode
+  (in-module "Gst")
+  (c-name "GstOutputSelectorPadNegotiationMode")
+  (values
+    '("none" "GST_OUTPUT_SELECTOR_PAD_NEGOTIATION_MODE_NONE" "0")
+    '("all" "GST_OUTPUT_SELECTOR_PAD_NEGOTIATION_MODE_ALL" "1")
+    '("active" "GST_OUTPUT_SELECTOR_PAD_NEGOTIATION_MODE_ACTIVE" "2")
+  )
+)
diff --git a/gstreamer/src/gst_enums.defs.patch b/gstreamer/src/gst_enums.defs.patch
index ffcb9a5..ae81f48 100644
--- a/gstreamer/src/gst_enums.defs.patch
+++ b/gstreamer/src/gst_enums.defs.patch
@@ -1,28 +1,12 @@
---- gst_enums_orig.defs	2010-10-20 22:48:27.000000000 -0400
-+++ gst_enums.defs	2010-10-20 22:43:34.000000000 -0400
-@@ -1,11 +1,13 @@
+--- gst_enums.defs	2011-04-18 00:50:03.000000000 -0400
++++ gst_enums.defs.new	2011-04-18 00:40:36.000000000 -0400
+@@ -1,3 +1,5 @@
 +;; Apply gst_enums.defs.patch after regenerating.
 +
  ;; From gstbin.h
  
  ;; Original typedef:
- ;; typedef enum {
- ;;   /* padding */
- ;;   GST_BIN_FLAG_LAST		= (GST_ELEMENT_FLAG_LAST << 5)
- ;; } GstBinFlags;
- 
- (define-flags-extended BinFlags
-   (in-module "Gst")
-   (c-name "GstBinFlags")
-@@ -479,92 +481,22 @@
-   (in-module "Gst")
-   (c-name "GstEventTypeFlags")
-   (values
-     '("upstream" "GST_EVENT_TYPE_UPSTREAM" "1 << 0")
-     '("downstream" "GST_EVENT_TYPE_DOWNSTREAM" "1 << 1")
-     '("serialized" "GST_EVENT_TYPE_SERIALIZED" "1 << 2")
-   )
- )
+@@ -506,76 +508,6 @@
  
  ;; Original typedef:
  ;; typedef enum {
@@ -99,23 +83,7 @@
  ;;   /* one of these */
  ;;   GST_SEEK_TYPE_NONE            = 0,
  ;;   GST_SEEK_TYPE_CUR             = 1,
- ;;   GST_SEEK_TYPE_SET             = 2,
- ;;   GST_SEEK_TYPE_END             = 3
- ;; } GstSeekType;
- 
- (define-enum-extended SeekType
-   (in-module "Gst")
-   (c-name "GstSeekType")
-   (values
-@@ -1903,111 +1835,123 @@
- ;;   FAKE_SINK_STATE_ERROR_READY_PAUSED,
- ;;   FAKE_SINK_STATE_ERROR_PAUSED_PLAYING,
- ;;   FAKE_SINK_STATE_ERROR_PLAYING_PAUSED,
- ;;   FAKE_SINK_STATE_ERROR_PAUSED_READY,
- ;;   FAKE_SINK_STATE_ERROR_READY_NULL
- ;; } GstFakeSinkStateError;
- 
- (define-enum-extended FakeSinkStateError
+@@ -2002,13 +1934,13 @@
    (in-module "Gst")
    (c-name "GstFakeSinkStateError")
    (values
@@ -136,21 +104,7 @@
    )
  )
  
- ;; From gstfakesrc.h
- 
- ;; Original typedef:
- ;; typedef enum {
- ;;   FAKE_SRC_FIRST_LAST_LOOP = 1,
- ;;   FAKE_SRC_LAST_FIRST_LOOP,
- ;;   FAKE_SRC_PING_PONG,
- ;;   FAKE_SRC_ORDERED_RANDOM,
- ;;   FAKE_SRC_RANDOM,
- ;;   FAKE_SRC_PATTERN_LOOP,
- ;;   FAKE_SRC_PING_PONG_PATTERN,
- ;;   FAKE_SRC_GET_ALWAYS_SUCEEDS
- ;; } GstFakeSrcOutputType;
- 
- (define-enum-extended FakeSrcOutputType
+@@ -2030,14 +1962,14 @@
    (in-module "Gst")
    (c-name "GstFakeSrcOutputType")
    (values
@@ -173,13 +127,7 @@
    )
  )
  
- ;; Original typedef:
- ;; typedef enum {
- ;;   FAKE_SRC_DATA_ALLOCATE = 1,
- ;;   FAKE_SRC_DATA_SUBBUFFER
- ;; } GstFakeSrcDataType;
- 
- (define-enum-extended FakeSrcDataType
+@@ -2051,8 +1983,8 @@
    (in-module "Gst")
    (c-name "GstFakeSrcDataType")
    (values
@@ -190,14 +138,7 @@
    )
  )
  
- ;; Original typedef:
- ;; typedef enum {
- ;;   FAKE_SRC_SIZETYPE_EMPTY = 1,
- ;;   FAKE_SRC_SIZETYPE_FIXED,
- ;;   FAKE_SRC_SIZETYPE_RANDOM
- ;; } GstFakeSrcSizeType;
- 
- (define-enum-extended FakeSrcSizeType
+@@ -2067,9 +1999,9 @@
    (in-module "Gst")
    (c-name "GstFakeSrcSizeType")
    (values
@@ -210,16 +151,7 @@
    )
  )
  
- ;; Original typedef:
- ;; typedef enum {
- ;;   FAKE_SRC_FILLTYPE_NOTHING = 1,
- ;;   FAKE_SRC_FILLTYPE_ZERO,
- ;;   FAKE_SRC_FILLTYPE_RANDOM,
- ;;   FAKE_SRC_FILLTYPE_PATTERN,
- ;;   FAKE_SRC_FILLTYPE_PATTERN_CONT
- ;; } GstFakeSrcFillType;
- 
- (define-enum-extended FakeSrcFillType
+@@ -2086,40 +2018,23 @@
    (in-module "Gst")
    (c-name "GstFakeSrcFillType")
    (values
@@ -233,14 +165,38 @@
 +    '("random" "GST_FAKE_SRC_FILLTYPE_RANDOM" "3")
 +    '("pattern" "GST_FAKE_SRC_FILLTYPE_PATTERN" "4")
 +    '("pattern-cont" "GST_FAKE_SRC_FILLTYPE_PATTERN_CONT" "5")
-+  )
-+)
-+
+   )
+ )
+ 
+-;; From gstqueue.h
+-
+-;; Original typedef:
+-;; typedef enum _GstQueueLeaky GstQueueLeaky;
+-;; typedef struct _GstQueueClass GstQueueClass;
+-;; 
+-;; /**
+-;;  * GstQueueLeaky:
+-;;  * @GST_QUEUE_NO_LEAK: Not Leaky
+-;;  * @GST_QUEUE_LEAK_UPSTREAM: Leaky on upstream (new buffers)
+-;;  * @GST_QUEUE_LEAK_DOWNSTREAM: Leaky on downstream (old buffers)
+-;;  *
+-;;  * Buffer dropping scheme to avoid the queue to block when full.
+-;;  */
+-;; enum _GstQueueLeaky {
+-;;   GST_QUEUE_NO_LEAK             = 0,
+-;;   GST_QUEUE_LEAK_UPSTREAM       = 1,
+-;;   GST_QUEUE_LEAK_DOWNSTREAM     = 2
+-;; };
+-
+-(define-enum-extended 
 +;; Handwritten for the filesink plug-in (Gst::FileSink).
 +(define-enum-extended FileSinkBufferMode
-+  (in-module "Gst")
+   (in-module "Gst")
+-  (c-name "")
 +  (c-name "GstFileSinkBufferMode")
-+  (values
+   (values
+-    '("upstream" "GST_QUEUE_LEAK_UPSTREAM" "1")
+-    '("downstream" "GST_QUEUE_LEAK_DOWNSTREAM" "2")
 +    '("default" "GST_FILE_SINK_BUFFER_MODE_DEFAULT" "-1")
 +    '("full" "GST_FILE_SINK_BUFFER_MODE_FULL" "0")
 +    '("line" "GST_FILE_SINK_BUFFER_MODE_LINE" "1")
@@ -248,23 +204,7 @@
    )
  )
  
- ;; From gsttee.h
- 
- ;; Original typedef:
- ;; typedef enum {
- ;;   GST_TEE_PULL_MODE_NEVER,
- ;;   GST_TEE_PULL_MODE_SINGLE,
- ;; } GstTeePullMode;
- 
-@@ -2057,22 +2001,33 @@
-   (c-name "GstAudioFieldFlag")
-   (values
-     '("rate" "GST_AUDIO_FIELD_RATE" "(1 << 0)")
-     '("channels" "GST_AUDIO_FIELD_CHANNELS" "(1 << 1)")
-     '("endianness" "GST_AUDIO_FIELD_ENDIANNESS" "(1 << 2)")
-     '("width" "GST_AUDIO_FIELD_WIDTH" "(1 << 3)")
-     '("depth" "GST_AUDIO_FIELD_DEPTH" "(1 << 4)")
-     '("signed" "GST_AUDIO_FIELD_SIGNED" "(1 << 5)")
+@@ -2185,6 +2100,17 @@
    )
  )
  
@@ -282,23 +222,7 @@
  ;; From gstbaseaudiosink.h
  
  ;; Original typedef:
- ;; typedef enum
- ;; {
- ;;   GST_BASE_AUDIO_SINK_SLAVE_RESAMPLE,
- ;;   GST_BASE_AUDIO_SINK_SLAVE_SKEW,
- ;;   GST_BASE_AUDIO_SINK_SLAVE_NONE
- ;; } GstBaseAudioSinkSlaveMethod;
- 
- (define-enum-extended BaseAudioSinkSlaveMethod
-@@ -3693,48 +3648,48 @@
- ;; {
- ;;   DITHER_NONE = 0,
- ;;   DITHER_RPDF,
- ;;   DITHER_TPDF,
- ;;   DITHER_TPDF_HF
- ;; } GstAudioConvertDithering;
- 
- (define-enum-extended AudioConvertDithering
+@@ -3835,10 +3761,10 @@
    (in-module "Gst")
    (c-name "GstAudioConvertDithering")
    (values
@@ -313,17 +237,7 @@
    )
  )
  
- ;; Original typedef:
- ;; typedef enum
- ;; {
- ;;   NOISE_SHAPING_NONE = 0,
- ;;   NOISE_SHAPING_ERROR_FEEDBACK,
- ;;   NOISE_SHAPING_SIMPLE,
- ;;   NOISE_SHAPING_MEDIUM,
- ;;   NOISE_SHAPING_HIGH
- ;; } GstAudioConvertNoiseShaping;
- 
- (define-enum-extended AudioConvertNoiseShaping
+@@ -3856,11 +3782,11 @@
    (in-module "Gst")
    (c-name "GstAudioConvertNoiseShaping")
    (values
@@ -340,23 +254,7 @@
    )
  )
  
- ;; From gstaudiotestsrc.h
- 
- ;; Original typedef:
- ;; typedef enum {
- ;;   GST_AUDIO_TEST_SRC_WAVE_SINE,
- ;;   GST_AUDIO_TEST_SRC_WAVE_SQUARE,
- ;;   GST_AUDIO_TEST_SRC_WAVE_SAW,
- ;;   GST_AUDIO_TEST_SRC_WAVE_TRIANGLE,
-@@ -4584,42 +4539,42 @@
- ;;     GST_TEXT_OVERLAY_WRAP_MODE_NONE = -1,
- ;;     GST_TEXT_OVERLAY_WRAP_MODE_WORD = PANGO_WRAP_WORD,
- ;;     GST_TEXT_OVERLAY_WRAP_MODE_CHAR = PANGO_WRAP_CHAR,
- ;;     GST_TEXT_OVERLAY_WRAP_MODE_WORD_CHAR = PANGO_WRAP_WORD_CHAR
- ;; } GstTextOverlayWrapMode;
- 
- (define-enum-extended TextOverlayWrapMode
-   (in-module "Gst")
+@@ -4728,9 +4654,9 @@
    (c-name "GstTextOverlayWrapMode")
    (values
      '("none" "GST_TEXT_OVERLAY_WRAP_MODE_NONE" "-1")
@@ -369,14 +267,7 @@
    )
  )
  
- ;; Original typedef:
- ;; typedef enum {
- ;;     GST_TEXT_OVERLAY_LINE_ALIGN_LEFT = PANGO_ALIGN_LEFT,
- ;;     GST_TEXT_OVERLAY_LINE_ALIGN_CENTER = PANGO_ALIGN_CENTER,
- ;;     GST_TEXT_OVERLAY_LINE_ALIGN_RIGHT = PANGO_ALIGN_RIGHT
- ;; } GstTextOverlayLineAlign;
- 
- (define-flags-extended TextOverlayLineAlign
+@@ -4745,9 +4671,9 @@
    (in-module "Gst")
    (c-name "GstTextOverlayLineAlign")
    (values
@@ -389,23 +280,7 @@
    )
  )
  
- ;; From gsttextrender.h
- 
- ;; Original typedef:
- ;; typedef enum {
- ;;     GST_TEXT_RENDER_VALIGN_BASELINE,
- ;;     GST_TEXT_RENDER_VALIGN_BOTTOM,
- ;;     GST_TEXT_RENDER_VALIGN_TOP
- ;; } GstTextRenderVAlign;
-@@ -4654,56 +4609,81 @@
- ;; Original typedef:
- ;; typedef enum {
- ;;     GST_TEXT_RENDER_LINE_ALIGN_LEFT = PANGO_ALIGN_LEFT,
- ;;     GST_TEXT_RENDER_LINE_ALIGN_CENTER = PANGO_ALIGN_CENTER,
- ;;     GST_TEXT_RENDER_LINE_ALIGN_RIGHT = PANGO_ALIGN_RIGHT
- ;; } GstTextRenderLineAlign;
- 
- (define-flags-extended TextRenderLineAlign
+@@ -4798,9 +4724,9 @@
    (in-module "Gst")
    (c-name "GstTextRenderLineAlign")
    (values
@@ -418,18 +293,7 @@
    )
  )
  
- ;; From gsttheoraenc.h
- 
- ;; Original typedef:
- ;; typedef enum
- ;; {
- ;;   BORDER_NONE,
- ;;   BORDER_BLACK,
- ;;   BORDER_MIRROR
- ;; }
- ;; GstTheoraEncBorderMode;
- 
- (define-enum-extended TheoraEncBorderMode
+@@ -4819,9 +4745,9 @@
    (in-module "Gst")
    (c-name "GstTheoraEncBorderMode")
    (values
@@ -442,15 +306,7 @@
    )
  )
  
- ;; Original typedef:
- ;; typedef enum
- ;; {
- ;;   MULTIPASS_MODE_SINGLE_PASS,
- ;;   MULTIPASS_MODE_FIRST_PASS,
- ;;   MULTIPASS_MODE_SECOND_PASS
- ;; } GstTheoraEncMultipassMode;
- 
- (define-enum-extended TheoraEncMultipassMode
+@@ -4837,9 +4763,44 @@
    (in-module "Gst")
    (c-name "GstTheoraEncMultipassMode")
    (values
@@ -460,12 +316,12 @@
 +    '("single-pass" "GST_THEORA_ENC_MULTIPASS_MODE_SINGLE_PASS" "0")
 +    '("first-pass" "GST_THEORA_ENC_MULTIPASS_MODE_FIRST_PASS" "1")
 +    '("second-pass" "GST_THEORA_ENC_MULTIPASS_MODE_SECOND_PASS" "2")
-+  )
-+)
-+
+   )
+ )
+ 
 +;; Handwritten for CdParanoiaSrc plugin (values taken from output of
 +;; `gst-inspect cdparanoiasrc' -- "paranoia-mode" property information)
-+(define-enum-extended GstCdParanoiaSrc
++(define-enum-extended CdParanoiaMode
 +  (in-module "Gst")
 +  (c-name "GstCdParanoiaMode")
 +  (values
@@ -475,9 +331,9 @@
 +    '("scratch" "GST_PARANOIA_MODE_SCRATCH" "1<<3")
 +    '("repair" "GST_PARANOIA_MODE_REPAIR" "1<<4")
 +    '("full" "GST_PARANOIA_MODE_FULL" "0xff")
-   )
- )
- 
++  )
++)
++
 +;; Handwritten for MultiFdSink plugin (taken from gstmultifdsink.c):
 +(define-enum-extended FDSetMode
 +  (in-module "Gst")
@@ -488,3 +344,13 @@
 +    '("epoll" "GST_FD_SET_MODE_EPOLL" "2")
 +  )
 +)
++;; Handwritten for OutputSelector plugin (taken from gstoutputselector.c):
++(define-enum-extended OutputSelectorPadNegotiationMode
++  (in-module "Gst")
++  (c-name "GstOutputSelectorPadNegotiationMode")
++  (values
++    '("none" "GST_OUTPUT_SELECTOR_PAD_NEGOTIATION_MODE_NONE" "0")
++    '("all" "GST_OUTPUT_SELECTOR_PAD_NEGOTIATION_MODE_ALL" "1")
++    '("active" "GST_OUTPUT_SELECTOR_PAD_NEGOTIATION_MODE_ACTIVE" "2")
++  )
++)
diff --git a/gstreamer/src/gst_signals.defs b/gstreamer/src/gst_signals.defs
index 259a538..d545eb4 100644
--- a/gstreamer/src/gst_signals.defs
+++ b/gstreamer/src/gst_signals.defs
@@ -29,6 +29,15 @@
   (construct-only #f)
 )
 
+(define-property enable-async
+  (of-object "GstBus")
+  (prop-type "GParamBoolean")
+  (docs "Enable async message delivery for bus watches and gst_bus_pop()")
+  (readable #f)
+  (writable #t)
+  (construct-only #t)
+)
+
 ;; From GstBin
 
 (define-signal element-added
@@ -832,6 +841,15 @@
   (construct-only #f)
 )
 
+(define-property throttle-time
+  (of-object "GstBaseSink")
+  (prop-type "GParamUInt64")
+  (docs "The time to keep between rendered buffers (unused)")
+  (readable #t)
+  (writable #t)
+  (construct-only #f)
+)
+
 ;; From GstBaseTransform
 
 (define-property name
@@ -1543,6 +1561,15 @@
   (construct-only #f)
 )
 
+(define-property throttle-time
+  (of-object "GstFakeSink")
+  (prop-type "GParamUInt64")
+  (docs "The time to keep between rendered buffers (unused)")
+  (readable #t)
+  (writable #t)
+  (construct-only #f)
+)
+
 (define-property state-error
   (of-object "GstFakeSink")
   (prop-type "GParamEnum")
@@ -1716,6 +1743,15 @@
   (construct-only #f)
 )
 
+(define-property throttle-time
+  (of-object "GstFdSink")
+  (prop-type "GParamUInt64")
+  (docs "The time to keep between rendered buffers (unused)")
+  (readable #t)
+  (writable #t)
+  (construct-only #f)
+)
+
 (define-property fd
   (of-object "GstFdSink")
   (prop-type "GParamInt")
@@ -1992,6 +2028,15 @@
   (construct-only #f)
 )
 
+(define-property throttle-time
+  (of-object "GstFileSink")
+  (prop-type "GParamUInt64")
+  (docs "The time to keep between rendered buffers (unused)")
+  (readable #t)
+  (writable #t)
+  (construct-only #f)
+)
+
 (define-property location
   (of-object "GstFileSink")
   (prop-type "GParamString")
@@ -2028,6 +2073,17 @@
   (construct-only #f)
 )
 
+;; From GstFunnel
+
+(define-property name
+  (of-object "GstFunnel")
+  (prop-type "GParamString")
+  (docs "The name of the object")
+  (readable #t)
+  (writable #t)
+  (construct-only #f)
+)
+
 ;; From GstIdentity
 
 (define-signal handoff
@@ -2174,6 +2230,52 @@
   (construct-only #f)
 )
 
+;; From GstInputSelector
+
+(define-signal block
+  (of-object "GstInputSelector")
+  (return-type "gint64")
+  (when "last")
+)
+
+(define-signal switch
+  (of-object "GstInputSelector")
+  (return-type "void")
+  (when "last")
+  (parameters
+    '("GstPad*" "p0")
+    '("gint64" "p1")
+    '("gint64" "p2")
+  )
+)
+
+(define-property name
+  (of-object "GstInputSelector")
+  (prop-type "GParamString")
+  (docs "The name of the object")
+  (readable #t)
+  (writable #t)
+  (construct-only #f)
+)
+
+(define-property n-pads
+  (of-object "GstInputSelector")
+  (prop-type "GParamUInt")
+  (docs "The number of sink pads")
+  (readable #t)
+  (writable #f)
+  (construct-only #f)
+)
+
+(define-property active-pad
+  (of-object "GstInputSelector")
+  (prop-type "GParamObject")
+  (docs "The currently active sink pad")
+  (readable #t)
+  (writable #t)
+  (construct-only #f)
+)
+
 ;; From GstMultiQueue
 
 (define-signal underrun
@@ -2278,6 +2380,44 @@
   (construct-only #f)
 )
 
+;; From GstOutputSelector
+
+(define-property name
+  (of-object "GstOutputSelector")
+  (prop-type "GParamString")
+  (docs "The name of the object")
+  (readable #t)
+  (writable #t)
+  (construct-only #f)
+)
+
+(define-property active-pad
+  (of-object "GstOutputSelector")
+  (prop-type "GParamObject")
+  (docs "Currently active src pad")
+  (readable #t)
+  (writable #t)
+  (construct-only #f)
+)
+
+(define-property resend-latest
+  (of-object "GstOutputSelector")
+  (prop-type "GParamBoolean")
+  (docs "Resend latest buffer after a switch to a new pad")
+  (readable #t)
+  (writable #t)
+  (construct-only #f)
+)
+
+(define-property pad-negotiation-mode
+  (of-object "GstOutputSelector")
+  (prop-type "GParamEnum")
+  (docs "The mode to be used for pad negotiation")
+  (readable #t)
+  (writable #t)
+  (construct-only #f)
+)
+
 ;; From GstQueue
 
 (define-signal underrun
@@ -2498,7 +2638,7 @@
 (define-property low-percent
   (of-object "GstQueue2")
   (prop-type "GParamInt")
-  (docs "Low threshold for buffering to start")
+  (docs "Low threshold for buffering to start. Only used if use-buffering is True")
   (readable #t)
   (writable #t)
   (construct-only #f)
@@ -2507,7 +2647,7 @@
 (define-property high-percent
   (of-object "GstQueue2")
   (prop-type "GParamInt")
-  (docs "High threshold for buffering to finish")
+  (docs "High threshold for buffering to finish. Only used if use-buffering is True")
   (readable #t)
   (writable #t)
   (construct-only #f)
@@ -2543,7 +2683,7 @@
 (define-property ring-buffer-max-size
   (of-object "GstQueue2")
   (prop-type "GParamUInt64")
-  (docs "Max. amount of data in the ring buffer (bytes, 0 = disabled")
+  (docs "Max. amount of data in the ring buffer (bytes, 0 = disabled)")
   (readable #t)
   (writable #t)
   (construct-only #f)
@@ -2680,6 +2820,26 @@
   (construct-only #f)
 )
 
+;; From GstValve
+
+(define-property name
+  (of-object "GstValve")
+  (prop-type "GParamString")
+  (docs "The name of the object")
+  (readable #t)
+  (writable #t)
+  (construct-only #f)
+)
+
+(define-property drop
+  (of-object "GstValve")
+  (prop-type "GParamBoolean")
+  (docs "Whether to drop buffers and events or let them through")
+  (readable #t)
+  (writable #t)
+  (construct-only #f)
+)
+
 ;; From GstAudioClock
 
 (define-property name
@@ -2857,6 +3017,15 @@
   (construct-only #f)
 )
 
+(define-property throttle-time
+  (of-object "GstBaseAudioSink")
+  (prop-type "GParamUInt64")
+  (docs "The time to keep between rendered buffers (unused)")
+  (readable #t)
+  (writable #t)
+  (construct-only #f)
+)
+
 (define-property buffer-time
   (of-object "GstBaseAudioSink")
   (prop-type "GParamInt64")
@@ -3113,6 +3282,15 @@
   (construct-only #f)
 )
 
+(define-property throttle-time
+  (of-object "GstAudioSink")
+  (prop-type "GParamUInt64")
+  (docs "The time to keep between rendered buffers (unused)")
+  (readable #t)
+  (writable #t)
+  (construct-only #f)
+)
+
 (define-property buffer-time
   (of-object "GstAudioSink")
   (prop-type "GParamInt64")
@@ -3716,6 +3894,15 @@
   (construct-only #f)
 )
 
+(define-property throttle-time
+  (of-object "GstVideoSink")
+  (prop-type "GParamUInt64")
+  (docs "The time to keep between rendered buffers (unused)")
+  (readable #t)
+  (writable #t)
+  (construct-only #f)
+)
+
 (define-property show-preroll-frame
   (of-object "GstVideoSink")
   (prop-type "GParamBoolean")
@@ -4189,6 +4376,15 @@
   (construct-only #f)
 )
 
+(define-property throttle-time
+  (of-object "GstAlsaSink")
+  (prop-type "GParamUInt64")
+  (docs "The time to keep between rendered buffers (unused)")
+  (readable #t)
+  (writable #t)
+  (construct-only #f)
+)
+
 (define-property buffer-time
   (of-object "GstAlsaSink")
   (prop-type "GParamInt64")
@@ -4726,6 +4922,15 @@
   (construct-only #f)
 )
 
+(define-property throttle-time
+  (of-object "GstAppSink")
+  (prop-type "GParamUInt64")
+  (docs "The time to keep between rendered buffers (unused)")
+  (readable #t)
+  (writable #t)
+  (construct-only #f)
+)
+
 (define-property caps
   (of-object "GstAppSink")
   (prop-type "GParamBoxed")
@@ -4747,7 +4952,7 @@
 (define-property emit-signals
   (of-object "GstAppSink")
   (prop-type "GParamBoolean")
-  (docs "Emit new-preroll and new-buffer signals")
+  (docs "Emit new-preroll, new-buffer and new-buffer-list signals")
   (readable #t)
   (writable #t)
   (construct-only #f)
@@ -4874,6 +5079,15 @@
   (construct-only #f)
 )
 
+(define-property skip-to-first
+  (of-object "GstAudioRate")
+  (prop-type "GParamBoolean")
+  (docs "Don't produce buffers before the first one we receive")
+  (readable #t)
+  (writable #t)
+  (construct-only #f)
+)
+
 ;; From GstAudioResample
 
 (define-property name
@@ -5467,6 +5681,17 @@
   )
 )
 
+(define-signal autoplug-sort
+  (of-object "GstDecodeBin2")
+  (return-type "GValueArray*")
+  (when "last")
+  (parameters
+    '("GstPad*" "p0")
+    '("GstCaps*" "p1")
+    '("GValueArray*" "p2")
+  )
+)
+
 (define-signal autoplug-select
   (of-object "GstDecodeBin2")
   (return-type "GstAutoplugSelectResult")
@@ -5503,17 +5728,6 @@
   )
 )
 
-(define-signal autoplug-sort
-  (of-object "GstDecodeBin2")
-  (return-type "GValueArray*")
-  (when "last")
-  (parameters
-    '("GstPad*" "p0")
-    '("GstCaps*" "p1")
-    '("GValueArray*" "p2")
-  )
-)
-
 (define-property name
   (of-object "GstDecodeBin2")
   (prop-type "GParamString")
@@ -5810,6 +6024,15 @@
   (construct-only #f)
 )
 
+(define-property throttle-time
+  (of-object "GstGioSink")
+  (prop-type "GParamUInt64")
+  (docs "The time to keep between rendered buffers (unused)")
+  (readable #t)
+  (writable #t)
+  (construct-only #f)
+)
+
 (define-property location
   (of-object "GstGioSink")
   (prop-type "GParamString")
@@ -5994,6 +6217,15 @@
   (construct-only #f)
 )
 
+(define-property throttle-time
+  (of-object "GstGioStreamSink")
+  (prop-type "GParamUInt64")
+  (docs "The time to keep between rendered buffers (unused)")
+  (readable #t)
+  (writable #t)
+  (construct-only #f)
+)
+
 (define-property stream
   (of-object "GstGioStreamSink")
   (prop-type "GParamObject")
@@ -6059,253 +6291,6 @@
   (construct-only #f)
 )
 
-;; From GstGnomeVFSSink
-
-(define-signal allow-overwrite
-  (of-object "GstGnomeVFSSink")
-  (return-type "gboolean")
-  (when "unknown")
-  (parameters
-    '("GnomeVFSURI*" "p0")
-  )
-)
-
-(define-property name
-  (of-object "GstGnomeVFSSink")
-  (prop-type "GParamString")
-  (docs "The name of the object")
-  (readable #t)
-  (writable #t)
-  (construct-only #f)
-)
-
-(define-property preroll-queue-len
-  (of-object "GstGnomeVFSSink")
-  (prop-type "GParamUInt")
-  (docs "Number of buffers to queue during preroll")
-  (readable #t)
-  (writable #t)
-  (construct-only #f)
-)
-
-(define-property sync
-  (of-object "GstGnomeVFSSink")
-  (prop-type "GParamBoolean")
-  (docs "Sync on the clock")
-  (readable #t)
-  (writable #t)
-  (construct-only #f)
-)
-
-(define-property max-lateness
-  (of-object "GstGnomeVFSSink")
-  (prop-type "GParamInt64")
-  (docs "Maximum number of nanoseconds that a buffer can be late before it is dropped (-1 unlimited)")
-  (readable #t)
-  (writable #t)
-  (construct-only #f)
-)
-
-(define-property qos
-  (of-object "GstGnomeVFSSink")
-  (prop-type "GParamBoolean")
-  (docs "Generate Quality-of-Service events upstream")
-  (readable #t)
-  (writable #t)
-  (construct-only #f)
-)
-
-(define-property async
-  (of-object "GstGnomeVFSSink")
-  (prop-type "GParamBoolean")
-  (docs "Go asynchronously to PAUSED")
-  (readable #t)
-  (writable #t)
-  (construct-only #f)
-)
-
-(define-property ts-offset
-  (of-object "GstGnomeVFSSink")
-  (prop-type "GParamInt64")
-  (docs "Timestamp offset in nanoseconds")
-  (readable #t)
-  (writable #t)
-  (construct-only #f)
-)
-
-(define-property enable-last-buffer
-  (of-object "GstGnomeVFSSink")
-  (prop-type "GParamBoolean")
-  (docs "Enable the last-buffer property")
-  (readable #t)
-  (writable #t)
-  (construct-only #f)
-)
-
-(define-property last-buffer
-  (of-object "GstGnomeVFSSink")
-  (prop-type "GParamSpecMiniObject")
-  (docs "The last buffer received in the sink")
-  (readable #t)
-  (writable #f)
-  (construct-only #f)
-)
-
-(define-property blocksize
-  (of-object "GstGnomeVFSSink")
-  (prop-type "GParamUInt")
-  (docs "Size in bytes to pull per buffer (0 = default)")
-  (readable #t)
-  (writable #t)
-  (construct-only #f)
-)
-
-(define-property render-delay
-  (of-object "GstGnomeVFSSink")
-  (prop-type "GParamUInt64")
-  (docs "Additional render delay of the sink in nanoseconds")
-  (readable #t)
-  (writable #t)
-  (construct-only #f)
-)
-
-(define-property location
-  (of-object "GstGnomeVFSSink")
-  (prop-type "GParamString")
-  (docs "Location of the file to write")
-  (readable #t)
-  (writable #t)
-  (construct-only #f)
-)
-
-(define-property uri
-  (of-object "GstGnomeVFSSink")
-  (prop-type "GParamBoxed")
-  (docs "URI for GnomeVFS")
-  (readable #t)
-  (writable #t)
-  (construct-only #f)
-)
-
-(define-property handle
-  (of-object "GstGnomeVFSSink")
-  (prop-type "GParamBoxed")
-  (docs "Handle for GnomeVFS")
-  (readable #t)
-  (writable #t)
-  (construct-only #f)
-)
-
-;; From GstGnomeVFSSrc
-
-(define-property name
-  (of-object "GstGnomeVFSSrc")
-  (prop-type "GParamString")
-  (docs "The name of the object")
-  (readable #t)
-  (writable #t)
-  (construct-only #f)
-)
-
-(define-property blocksize
-  (of-object "GstGnomeVFSSrc")
-  (prop-type "GParamULong")
-  (docs "Size in bytes to read per buffer (-1 = default)")
-  (readable #t)
-  (writable #t)
-  (construct-only #f)
-)
-
-(define-property num-buffers
-  (of-object "GstGnomeVFSSrc")
-  (prop-type "GParamInt")
-  (docs "Number of buffers to output before sending EOS (-1 = unlimited)")
-  (readable #t)
-  (writable #t)
-  (construct-only #f)
-)
-
-(define-property typefind
-  (of-object "GstGnomeVFSSrc")
-  (prop-type "GParamBoolean")
-  (docs "Run typefind before negotiating")
-  (readable #t)
-  (writable #t)
-  (construct-only #f)
-)
-
-(define-property do-timestamp
-  (of-object "GstGnomeVFSSrc")
-  (prop-type "GParamBoolean")
-  (docs "Apply current stream time to buffers")
-  (readable #t)
-  (writable #t)
-  (construct-only #f)
-)
-
-(define-property handle
-  (of-object "GstGnomeVFSSrc")
-  (prop-type "GParamBoxed")
-  (docs "Handle for GnomeVFS")
-  (readable #t)
-  (writable #t)
-  (construct-only #f)
-)
-
-(define-property location
-  (of-object "GstGnomeVFSSrc")
-  (prop-type "GParamString")
-  (docs "Location of the file to read")
-  (readable #t)
-  (writable #t)
-  (construct-only #f)
-)
-
-(define-property iradio-mode
-  (of-object "GstGnomeVFSSrc")
-  (prop-type "GParamBoolean")
-  (docs "Enable internet radio mode (extraction of shoutcast/icecast metadata)")
-  (readable #t)
-  (writable #t)
-  (construct-only #f)
-)
-
-(define-property iradio-name
-  (of-object "GstGnomeVFSSrc")
-  (prop-type "GParamString")
-  (docs "Name of the stream")
-  (readable #t)
-  (writable #f)
-  (construct-only #f)
-)
-
-(define-property iradio-genre
-  (of-object "GstGnomeVFSSrc")
-  (prop-type "GParamString")
-  (docs "Genre of the stream")
-  (readable #t)
-  (writable #f)
-  (construct-only #f)
-)
-
-(define-property iradio-url
-  (of-object "GstGnomeVFSSrc")
-  (prop-type "GParamString")
-  (docs "Homepage URL for radio stream")
-  (readable #t)
-  (writable #f)
-  (construct-only #f)
-)
-
-(define-property iradio-title
-  (of-object "GstGnomeVFSSrc")
-  (prop-type "GParamString")
-  (docs "Name of currently playing song")
-  (readable #t)
-  (writable #f)
-  (construct-only #f)
-)
-
 ;; From GstMultiFdSink
 
 (define-signal add
@@ -6491,6 +6476,15 @@
   (construct-only #f)
 )
 
+(define-property throttle-time
+  (of-object "GstMultiFdSink")
+  (prop-type "GParamUInt64")
+  (docs "The time to keep between rendered buffers (unused)")
+  (readable #t)
+  (writable #t)
+  (construct-only #f)
+)
+
 (define-property protocol
   (of-object "GstMultiFdSink")
   (prop-type "GParamEnum")
@@ -6958,6 +6952,15 @@
 
 ;; From GstPlayBin2
 
+(define-signal source-setup
+  (of-object "GstPlayBin2")
+  (return-type "void")
+  (when "last")
+  (parameters
+    '("GstElement*" "p0")
+  )
+)
+
 (define-signal about-to-finish
   (of-object "GstPlayBin2")
   (return-type "void")
@@ -7564,6 +7567,15 @@
   (construct-only #f)
 )
 
+(define-property throttle-time
+  (of-object "GstTCPClientSink")
+  (prop-type "GParamUInt64")
+  (docs "The time to keep between rendered buffers (unused)")
+  (readable #t)
+  (writable #t)
+  (construct-only #f)
+)
+
 (define-property host
   (of-object "GstTCPClientSink")
   (prop-type "GParamString")
@@ -7766,6 +7778,15 @@
   (construct-only #f)
 )
 
+(define-property throttle-time
+  (of-object "GstTCPServerSink")
+  (prop-type "GParamUInt64")
+  (docs "The time to keep between rendered buffers (unused)")
+  (readable #t)
+  (writable #t)
+  (construct-only #f)
+)
+
 (define-property protocol
   (of-object "GstTCPServerSink")
   (prop-type "GParamEnum")
@@ -8380,7 +8401,7 @@
 (define-property speed-level
   (of-object "GstTheoraEnc")
   (prop-type "GParamInt")
-  (docs "Controls the amount of motion vector searching done while encoding.  This property requires libtheora version >= 1.0")
+  (docs "Controls the amount of analysis performed when encoding. Higher values trade compression quality for speed. This property requires libtheora version >= 1.0, and the maximum value may vary based on encoder version.")
   (readable #t)
   (writable #t)
   (construct-only #f)
@@ -8389,7 +8410,7 @@
 (define-property vp3-compatible
   (of-object "GstTheoraEnc")
   (prop-type "GParamBoolean")
-  (docs "Disables non-VP3 compatible features.  This property requires libtheora version >= 1.1")
+  (docs "Disables non-VP3 compatible features")
   (readable #t)
   (writable #t)
   (construct-only #f)
@@ -8398,7 +8419,7 @@
 (define-property drop-frames
   (of-object "GstTheoraEnc")
   (prop-type "GParamBoolean")
-  (docs "Allow or disallow frame dropping.  This property requires libtheora version >= 1.1")
+  (docs "Allow or disallow frame dropping")
   (readable #t)
   (writable #t)
   (construct-only #f)
@@ -8407,7 +8428,7 @@
 (define-property cap-overflow
   (of-object "GstTheoraEnc")
   (prop-type "GParamBoolean")
-  (docs "Enable capping of bit reservoir overflows.  This property requires libtheora version >= 1.1")
+  (docs "Enable capping of bit reservoir overflows")
   (readable #t)
   (writable #t)
   (construct-only #f)
@@ -8416,7 +8437,7 @@
 (define-property cap-underflow
   (of-object "GstTheoraEnc")
   (prop-type "GParamBoolean")
-  (docs "Enable capping of bit reservoir underflows.  This property requires libtheora version >= 1.1")
+  (docs "Enable capping of bit reservoir underflows")
   (readable #t)
   (writable #t)
   (construct-only #f)
@@ -8425,7 +8446,7 @@
 (define-property rate-buffer
   (of-object "GstTheoraEnc")
   (prop-type "GParamInt")
-  (docs "Sets the size of the rate control buffer, in units of frames.  The default value of 0 instructs the encoder to automatically select an appropriate value.  This property requires libtheora version >= 1.1")
+  (docs "Sets the size of the rate control buffer, in units of frames.  The default value of 0 instructs the encoder to automatically select an appropriate value")
   (readable #t)
   (writable #t)
   (construct-only #f)
@@ -8692,6 +8713,17 @@
   )
 )
 
+(define-signal autoplug-sort
+  (of-object "GstURIDecodeBin")
+  (return-type "GValueArray*")
+  (when "last")
+  (parameters
+    '("GstPad*" "p0")
+    '("GstCaps*" "p1")
+    '("GValueArray*" "p2")
+  )
+)
+
 (define-signal autoplug-select
   (of-object "GstURIDecodeBin")
   (return-type "GstAutoplugSelectResult")
@@ -8709,6 +8741,15 @@
   (when "last")
 )
 
+(define-signal source-setup
+  (of-object "GstURIDecodeBin")
+  (return-type "void")
+  (when "last")
+  (parameters
+    '("GstElement*" "p0")
+  )
+)
+
 (define-property name
   (of-object "GstURIDecodeBin")
   (prop-type "GParamString")
@@ -9411,6 +9452,15 @@
   (construct-only #f)
 )
 
+(define-property throttle-time
+  (of-object "GstXImageSink")
+  (prop-type "GParamUInt64")
+  (docs "The time to keep between rendered buffers (unused)")
+  (readable #t)
+  (writable #t)
+  (construct-only #f)
+)
+
 (define-property show-preroll-frame
   (of-object "GstXImageSink")
   (prop-type "GParamBoolean")
@@ -9474,6 +9524,24 @@
   (construct-only #f)
 )
 
+(define-property window-width
+  (of-object "GstXImageSink")
+  (prop-type "GParamUInt64")
+  (docs "Width of the window")
+  (readable #t)
+  (writable #f)
+  (construct-only #f)
+)
+
+(define-property window-height
+  (of-object "GstXImageSink")
+  (prop-type "GParamUInt64")
+  (docs "Height of the window")
+  (readable #t)
+  (writable #f)
+  (construct-only #f)
+)
+
 ;; From GstXvImageSink
 
 (define-property name
@@ -9575,6 +9643,15 @@
   (construct-only #f)
 )
 
+(define-property throttle-time
+  (of-object "GstXvImageSink")
+  (prop-type "GParamUInt64")
+  (docs "The time to keep between rendered buffers (unused)")
+  (readable #t)
+  (writable #t)
+  (construct-only #f)
+)
+
 (define-property show-preroll-frame
   (of-object "GstXvImageSink")
   (prop-type "GParamBoolean")
@@ -9728,3 +9805,21 @@
   (construct-only #f)
 )
 
+(define-property window-width
+  (of-object "GstXvImageSink")
+  (prop-type "GParamUInt64")
+  (docs "Width of the window")
+  (readable #t)
+  (writable #f)
+  (construct-only #f)
+)
+
+(define-property window-height
+  (of-object "GstXvImageSink")
+  (prop-type "GParamUInt64")
+  (docs "Height of the window")
+  (readable #t)
+  (writable #f)
+  (construct-only #f)
+)
+
diff --git a/tools/extra_defs_gen/generate_defs_gst.cc b/tools/extra_defs_gen/generate_defs_gst.cc
index 9297c39..915b654 100644
--- a/tools/extra_defs_gen/generate_defs_gst.cc
+++ b/tools/extra_defs_gen/generate_defs_gst.cc
@@ -136,12 +136,16 @@ int main (int argc, char *argv[])
             << get_plugin_defs("fdsrc", gst_type_is_a_pointer)
             << get_plugin_defs("filesrc", gst_type_is_a_pointer)
             << get_plugin_defs("filesink", gst_type_is_a_pointer)
+            << get_plugin_defs("funnel", gst_type_is_a_pointer)
             << get_plugin_defs("identity", gst_type_is_a_pointer)
+            << get_plugin_defs("input-selector", gst_type_is_a_pointer)
             << get_plugin_defs("multiqueue", gst_type_is_a_pointer)
+            << get_plugin_defs("output-selector", gst_type_is_a_pointer)
             << get_plugin_defs("queue", gst_type_is_a_pointer)
             << get_plugin_defs("queue2", gst_type_is_a_pointer)
             << get_plugin_defs("tee", gst_type_is_a_pointer)
             << get_plugin_defs("typefind", gst_type_is_a_pointer)
+            << get_plugin_defs("valve", gst_type_is_a_pointer)
 
   // gst-plugins-base (GStreamer base) types:
             << get_defs(GST_TYPE_AUDIO_CLOCK, gst_type_is_a_pointer)
diff --git a/tools/extra_defs_gen/generate_plugin_gmmproc_file.cc b/tools/extra_defs_gen/generate_plugin_gmmproc_file.cc
index 7f29d00..6c551c0 100644
--- a/tools/extra_defs_gen/generate_plugin_gmmproc_file.cc
+++ b/tools/extra_defs_gen/generate_plugin_gmmproc_file.cc
@@ -432,7 +432,7 @@ static std::string get_signal_wrap_statements(std::string& includeMacroCalls,
         signalMethodName + '(';
 
       cClassSignalDeclarations += "  " + returnCType + " (*" +
-        signalMethodName + ") (" + cTypeName + "* element";
+        signalMethodName + "_signal) (" + cTypeName + "* element";
 
       //Loop through the list of parameters:
       const GType* pParameters = signalQuery.param_types;
@@ -542,7 +542,7 @@ static std::string get_signal_wrap_statements(std::string& includeMacroCalls,
         }
       }
 
-      wrapStatement += "), \"" + signalName + "\")\n";
+      wrapStatement += "), \"" + signalName + "\", no_default_handler)\n";
 
       // Finish off the action signal declaration and definition if this
       // is an action signal.



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]