summaryrefslogtreecommitdiffstats
path: root/gst
diff options
context:
space:
mode:
authorWim Taymans <wim.taymans@gmail.com>2002-05-30 19:09:11 +0000
committerWim Taymans <wim.taymans@gmail.com>2002-05-30 19:09:11 +0000
commitdd75c7776c598ffa58b4038c4bb77fa97d86a95c (patch)
tree9e07b74b898c5710c7d4a2d536aa50a83c1533aa /gst
parent22c7be80df659f645786d8fca5483329e26456ae (diff)
Implement an element event handler.
Original commit message from CVS: Implement an element event handler.
Diffstat (limited to 'gst')
-rw-r--r--gst/avi/gstavidemux.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/gst/avi/gstavidemux.c b/gst/avi/gstavidemux.c
index 5b348f1b..77bbcefd 100644
--- a/gst/avi/gstavidemux.c
+++ b/gst/avi/gstavidemux.c
@@ -153,6 +153,8 @@ static void gst_avi_demux_init (GstAviDemux *avi_demux);
static void gst_avi_demux_loop (GstElement *element);
+static gboolean gst_avi_demux_send_event (GstElement *element, GstEvent *event);
+
static gboolean gst_avi_demux_handle_src_event (GstPad *pad, GstEvent *event);
static gboolean gst_avi_demux_handle_src_query (GstPad *pad, GstPadQueryType type,
GstFormat *format, gint64 *value);
@@ -207,6 +209,7 @@ gst_avi_demux_class_init (GstAviDemuxClass *klass)
gobject_class->get_property = gst_avi_demux_get_property;
gstelement_class->change_state = gst_avi_demux_change_state;
+ gstelement_class->send_event = gst_avi_demux_send_event;
}
static void
@@ -855,6 +858,26 @@ gst_avi_demux_sync_streams (GstAviDemux *avi_demux, guint64 time)
}
static gboolean
+gst_avi_demux_send_event (GstElement *element, GstEvent *event)
+{
+ GList *pads;
+
+ pads = gst_element_get_pad_list (element);
+
+ while (pads) {
+ GstPad *pad = GST_PAD (pads->data);
+
+ if (GST_PAD_DIRECTION (pad) == GST_PAD_SRC) {
+ return gst_avi_demux_handle_src_event (pad, event);
+ }
+
+ pads = g_list_next (pads);
+ }
+
+ return FALSE;
+}
+
+static gboolean
gst_avi_demux_handle_src_event (GstPad *pad, GstEvent *event)
{
gboolean res = TRUE;