diff --git a/ChangeLog b/ChangeLog index 2b39851dd0..e652b3ebf8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2005-02-23 Andy Wingo + * gst/elements/gstidentity.c (gst_identity_event): Pause the sink + task, if any, during EOS. Don't need to take the stream lock, we + already have it. + * gst/gstmessage.h * gst/gstmessage.c (_gst_message_free) (gst_message_new_application): New message type, APPLICATION, diff --git a/gst/elements/gstidentity.c b/gst/elements/gstidentity.c index 1d7d980985..4e45de44c6 100644 --- a/gst/elements/gstidentity.c +++ b/gst/elements/gstidentity.c @@ -357,9 +357,8 @@ gst_identity_event (GstPad * pad, GstEvent * event) gst_pad_event_default (pad, event); if (GST_EVENT_FLUSH_DONE (event)) { if (identity->sink_mode == GST_ACTIVATE_PULL) { - GST_STREAM_LOCK (identity->sinkpad); + /* already have the sink stream lock */ gst_task_start (GST_RPAD_TASK (identity->sinkpad)); - GST_STREAM_UNLOCK (identity->sinkpad); } if (identity->src_mode == GST_ACTIVATE_PUSH) { GST_STREAM_LOCK (identity->srcpad); @@ -375,7 +374,11 @@ gst_identity_event (GstPad * pad, GstEvent * event) ret = TRUE; goto done; case GST_EVENT_EOS: - g_print ("identity got eos\n"); + /* g_print ("identity got eos\n"); */ + if (identity->sink_mode == GST_ACTIVATE_PULL) { + /* already have the sink stream lock */ + gst_task_pause (GST_RPAD_TASK (identity->sinkpad)); + } break; default: g_print ("identity got event %p of type %d\n", event, diff --git a/plugins/elements/gstidentity.c b/plugins/elements/gstidentity.c index 1d7d980985..4e45de44c6 100644 --- a/plugins/elements/gstidentity.c +++ b/plugins/elements/gstidentity.c @@ -357,9 +357,8 @@ gst_identity_event (GstPad * pad, GstEvent * event) gst_pad_event_default (pad, event); if (GST_EVENT_FLUSH_DONE (event)) { if (identity->sink_mode == GST_ACTIVATE_PULL) { - GST_STREAM_LOCK (identity->sinkpad); + /* already have the sink stream lock */ gst_task_start (GST_RPAD_TASK (identity->sinkpad)); - GST_STREAM_UNLOCK (identity->sinkpad); } if (identity->src_mode == GST_ACTIVATE_PUSH) { GST_STREAM_LOCK (identity->srcpad); @@ -375,7 +374,11 @@ gst_identity_event (GstPad * pad, GstEvent * event) ret = TRUE; goto done; case GST_EVENT_EOS: - g_print ("identity got eos\n"); + /* g_print ("identity got eos\n"); */ + if (identity->sink_mode == GST_ACTIVATE_PULL) { + /* already have the sink stream lock */ + gst_task_pause (GST_RPAD_TASK (identity->sinkpad)); + } break; default: g_print ("identity got event %p of type %d\n", event,