diff options
author | Olivier Crete <olivier.crete@collabora.co.uk> | 2008-04-28 22:36:06 +0000 |
---|---|---|
committer | Edward Hervey <bilboed@bilboed.com> | 2009-02-17 19:29:04 +0100 |
commit | 89566bfc8aa8dbb699d35a784722b7f13f6c3e64 (patch) | |
tree | c3e58255a2ea6f0f3ba42b26b377c4034fdfa9df | |
parent | 72efe4c3d730e24438be8ba3db616b3bcc7ae38b (diff) | |
download | gst-plugins-bad-89566bfc8aa8dbb699d35a784722b7f13f6c3e64.tar.gz gst-plugins-bad-89566bfc8aa8dbb699d35a784722b7f13f6c3e64.tar.bz2 gst-plugins-bad-89566bfc8aa8dbb699d35a784722b7f13f6c3e64.zip |
[MOVED FROM GST-P-FARSIGHT] Fix deadlock on invalid timestamp error
20080428223606-3e2dc-963e48b33efaf84c16d4ec4b789a6dfb2d9358ad.gz
-rw-r--r-- | gst/liveadder/liveadder.c | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/gst/liveadder/liveadder.c b/gst/liveadder/liveadder.c index a6ae91a6..54a7f475 100644 --- a/gst/liveadder/liveadder.c +++ b/gst/liveadder/liveadder.c @@ -798,13 +798,8 @@ gst_live_live_adder_chain (GstPad *pad, GstBuffer *buffer) goto out; } - if (!GST_BUFFER_TIMESTAMP_IS_VALID(buffer)) { - GST_ELEMENT_ERROR (adder, STREAM, FAILED, - ("Buffer without a valid timestamp received"), ("")); - ret = GST_FLOW_ERROR; - gst_buffer_unref (buffer); - goto out; - } + if (!GST_BUFFER_TIMESTAMP_IS_VALID(buffer)) + goto invalid_timestamp; /* Just see if we receive invalid timestamp/durations */ if (GST_CLOCK_TIME_IS_VALID (padprivate->expected_timestamp) && @@ -972,6 +967,16 @@ gst_live_live_adder_chain (GstPad *pad, GstBuffer *buffer) gst_object_unref (adder); return ret; + + invalid_timestamp: + + GST_OBJECT_UNLOCK (adder); + gst_buffer_unref (buffer); + GST_ELEMENT_ERROR (adder, STREAM, FAILED, + ("Buffer without a valid timestamp received"), + ("Invalid timestamp received on buffer")); + + return GST_FLOW_ERROR; } /* |