diff options
author | Ronald S. Bultje <rbultje@ronald.bitfreak.net> | 2005-01-11 16:52:47 +0000 |
---|---|---|
committer | Ronald S. Bultje <rbultje@ronald.bitfreak.net> | 2005-01-11 16:52:47 +0000 |
commit | 3b12894436aaeaafd061caba3e1f222355107b1b (patch) | |
tree | e01268d752dc291384870eec3898a57abbe362f6 /gst/avi/gstavimux.c | |
parent | 1f66f305742af5bacc2e2e80c0da8d9a14288feb (diff) |
gst/avi/gstavimux.c: Reusability fixes.
Original commit message from CVS:
* gst/avi/gstavimux.c: (gst_avimux_class_init),
(gst_avimux_pad_unlink), (gst_avimux_release_pad):
Reusability fixes.
Diffstat (limited to 'gst/avi/gstavimux.c')
-rw-r--r-- | gst/avi/gstavimux.c | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/gst/avi/gstavimux.c b/gst/avi/gstavimux.c index c558c6ad..7550baeb 100644 --- a/gst/avi/gstavimux.c +++ b/gst/avi/gstavimux.c @@ -150,6 +150,7 @@ static void gst_avimux_loop (GstElement * element); static gboolean gst_avimux_handle_event (GstPad * pad, GstEvent * event); static GstPad *gst_avimux_request_new_pad (GstElement * element, GstPadTemplate * templ, const gchar * name); +static void gst_avimux_release_pad (GstElement * element, GstPad * pad); static void gst_avimux_set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec); static void gst_avimux_get_property (GObject * object, @@ -220,6 +221,7 @@ gst_avimux_class_init (GstAviMuxClass * klass) "Support for openDML-2.0 (big) AVI files", 0, G_PARAM_READWRITE)); gstelement_class->request_new_pad = gst_avimux_request_new_pad; + gstelement_class->release_pad = gst_avimux_release_pad; gstelement_class->change_state = gst_avimux_change_state; @@ -487,10 +489,8 @@ gst_avimux_pad_unlink (GstPad * pad, GstPad * peer, gpointer data) if (pad == avimux->audiosinkpad) { avimux->audio_pad_connected = FALSE; - avimux->audiosinkpad = NULL; } else if (pad == avimux->videosinkpad) { avimux->video_pad_connected = FALSE; - avimux->videosinkpad = NULL; } else { g_warning ("Unknown padname '%s'", padname); return; @@ -543,6 +543,24 @@ gst_avimux_request_new_pad (GstElement * element, return newpad; } +static void +gst_avimux_release_pad (GstElement * element, GstPad * pad) +{ + GstAviMux *avimux = GST_AVIMUX (element); + + if (pad == avimux->videosinkpad) { + avimux->videosinkpad = NULL; + } else if (pad == avimux->audiosinkpad) { + avimux->audiosinkpad = NULL; + } else { + g_warning ("Unknown pad %s", gst_pad_get_name (pad)); + return; + } + + GST_DEBUG ("Removed pad '%s'", gst_pad_get_name (pad)); + gst_element_remove_pad (element, pad); +} + /* maybe some of these functions should be moved to riff.h? */ /* DISCLAIMER: this function is ugly. So be it (i.e. it makes the rest easier) */ |