From 7f8be6935aab0e3952710bdbb3638efcb547486a Mon Sep 17 00:00:00 2001 From: Edward Hervey Date: Fri, 17 Feb 2012 15:09:06 -0800 Subject: basetransform: Handle return value of decide_allocation vmethod If it fails, properly propagate the error --- libs/gst/base/gstbasetransform.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'libs') diff --git a/libs/gst/base/gstbasetransform.c b/libs/gst/base/gstbasetransform.c index f8bea18fb..2da03ac6b 100644 --- a/libs/gst/base/gstbasetransform.c +++ b/libs/gst/base/gstbasetransform.c @@ -840,7 +840,8 @@ gst_base_transform_do_bufferpool (GstBaseTransform * trans, GstCaps * outcaps) GST_DEBUG_OBJECT (trans, "calling decide_allocation"); if (G_LIKELY (klass->decide_allocation)) - result = klass->decide_allocation (trans, query); + if ((result = klass->decide_allocation (trans, query)) == FALSE) + goto no_decide_allocation; /* we got configuration from our peer, parse them */ gst_query_parse_allocation_params (query, &size, &min, &max, &prefix, @@ -874,6 +875,15 @@ gst_base_transform_do_bufferpool (GstBaseTransform * trans, GstCaps * outcaps) alignment); return result; + + /* Errors */ +no_decide_allocation: + { + GST_WARNING_OBJECT (trans, "Subclass failed to decide allocation"); + gst_query_unref (query); + + return result; + } } /* function triggered when the in and out caps are negotiated and need -- cgit v1.2.3