added fix for the switch element, see

http://bugzilla.gnome.org/show_bug.cgi?id=308167
This commit is contained in:
maroy 2005-06-18 16:56:23 +00:00
parent cf47169022
commit 4c839c6a80
2 changed files with 38 additions and 1 deletions

View file

@ -22,7 +22,7 @@
#
#
# Author : $Author: maroy $
# Version : $Revision: 1.1 $
# Version : $Revision: 1.2 $
# Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/tools/gstreamer/gstreamer-0.8.10/bin/Attic/install.sh,v $
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
@ -62,7 +62,12 @@ echo "installing $plugins from $basedir to $installdir"
cd $tmpdir
tar xfj $plugins_tar
cd $plugins
# see bug report at http://bugzilla.gnome.org/show_bug.cgi?id=305658
# for details on the following patch
patch -p1 < $etcdir/adder-fix.diff
# see bug report at http://bugzilla.gnome.org/show_bug.cgi?id=308167
# for details on the following patch
patch -p1 < $etcdir/switcher-fix.diff
# --disable-spc is a workaround for gst-plugins-0.8.9, as some APU.c file
# is missing from there. remove this when later versions come around
./configure --disable-spc --prefix=$installdir

View file

@ -0,0 +1,32 @@
--- gst-plugins-0.8.9/gst/switch/gstswitch.c 2005-04-14 18:26:47.000000000 +0200
+++ gst-plugins-0.8.9-livesupport/gst/switch/gstswitch.c 2005-06-18 11:26:19.000000000 +0200
@@ -241,15 +241,23 @@
GstEvent *event = GST_EVENT (data);
GST_LOG_OBJECT (gstswitch,
- "handling event from active pad %p", switchpad->sinkpad);
+ "handling event of type %d from active pad %p",
+ GST_EVENT_TYPE(GST_EVENT(data)),
+ switchpad->sinkpad);
/* Handling event */
gst_pad_event_default (switchpad->sinkpad, event);
} else {
- /* Pushing active sinkpad data to srcpad */
- GST_LOG_OBJECT (gstswitch,
- "pushing data from active pad %p to %p",
- switchpad->sinkpad, gstswitch->srcpad);
- gst_pad_push (gstswitch->srcpad, data);
+ if (GST_PAD_IS_ACTIVE(GST_PAD_PEER(gstswitch->srcpad))) {
+ /* Pushing active sinkpad data to srcpad */
+ GST_LOG_OBJECT (gstswitch,
+ "pushing data from active pad %p to %p",
+ switchpad->sinkpad, gstswitch->srcpad);
+ gst_pad_push (gstswitch->srcpad, data);
+ } else {
+ /* the peer has become inactive, put us into EOS state */
+ GST_LOG_OBJECT(gstswitch, "peer pad inactivated, going to eos");
+ gst_element_set_eos(GST_ELEMENT(gstswitch));
+ }
}
/* Mark this data as forwarded so that it won't get unrefed on next poll */