camerabin: don't leak messages and element refs in preview

This commit is contained in:
Stefan Kost 2009-06-26 13:09:27 +03:00
parent 024b44b090
commit 4ab9f800a8

View file

@ -183,7 +183,7 @@ gst_camerabin_preview_convert (GstCameraBin * camera, GstBuffer * buf)
if (!src || !sink) { if (!src || !sink) {
GST_WARNING ("pipeline doesn't have src / sink elements"); GST_WARNING ("pipeline doesn't have src / sink elements");
goto no_pipeline; goto missing_elements;
} }
g_object_set (src, "size", (gint64) GST_BUFFER_SIZE (buf), g_object_set (src, "size", (gint64) GST_BUFFER_SIZE (buf),
@ -234,6 +234,7 @@ gst_camerabin_preview_convert (GstCameraBin * camera, GstBuffer * buf)
g_return_val_if_reached (NULL); g_return_val_if_reached (NULL);
} }
} }
gst_message_unref (msg);
} else { } else {
g_warning ("Could not make preview image: %s", "timeout during conversion"); g_warning ("Could not make preview image: %s", "timeout during conversion");
result = NULL; result = NULL;
@ -245,9 +246,21 @@ gst_camerabin_preview_convert (GstCameraBin * camera, GstBuffer * buf)
GST_BUFFER_FLAGS (buf) = bflags; GST_BUFFER_FLAGS (buf) = bflags;
done:
if (src)
gst_object_unref (src);
if (sink)
gst_object_unref (sink);
return result; return result;
/* ERRORS */ /* ERRORS */
missing_elements:
{
g_warning ("Could not make preview image: %s",
"missing elements in pipeline (unknown error)");
goto done;
}
no_pipeline: no_pipeline:
{ {
g_warning ("Could not make preview image: %s", g_warning ("Could not make preview image: %s",