From 4ab9f800a8fd757e44d511fe8265b99ef69b3532 Mon Sep 17 00:00:00 2001 From: Stefan Kost Date: Fri, 26 Jun 2009 13:09:27 +0300 Subject: camerabin: don't leak messages and element refs in preview --- gst/camerabin/camerabinpreview.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'gst/camerabin') diff --git a/gst/camerabin/camerabinpreview.c b/gst/camerabin/camerabinpreview.c index b64b2143..9b12bbac 100644 --- a/gst/camerabin/camerabinpreview.c +++ b/gst/camerabin/camerabinpreview.c @@ -183,7 +183,7 @@ gst_camerabin_preview_convert (GstCameraBin * camera, GstBuffer * buf) if (!src || !sink) { 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), @@ -234,6 +234,7 @@ gst_camerabin_preview_convert (GstCameraBin * camera, GstBuffer * buf) g_return_val_if_reached (NULL); } } + gst_message_unref (msg); } else { g_warning ("Could not make preview image: %s", "timeout during conversion"); result = NULL; @@ -245,9 +246,21 @@ gst_camerabin_preview_convert (GstCameraBin * camera, GstBuffer * buf) GST_BUFFER_FLAGS (buf) = bflags; +done: + if (src) + gst_object_unref (src); + if (sink) + gst_object_unref (sink); + return result; /* ERRORS */ +missing_elements: + { + g_warning ("Could not make preview image: %s", + "missing elements in pipeline (unknown error)"); + goto done; + } no_pipeline: { g_warning ("Could not make preview image: %s", -- cgit v1.2.1