diff options
author | Stefan Kost <ensonic@users.sf.net> | 2009-06-26 13:09:27 +0300 |
---|---|---|
committer | Stefan Kost <ensonic@users.sf.net> | 2009-06-26 18:36:24 +0300 |
commit | 4ab9f800a8fd757e44d511fe8265b99ef69b3532 (patch) | |
tree | 2c8cf75ce24f58674e87e796801707f3cf13f30e | |
parent | 024b44b090688e2e1b9726dadb6d21c6e853c936 (diff) | |
download | gst-plugins-bad-4ab9f800a8fd757e44d511fe8265b99ef69b3532.tar.gz gst-plugins-bad-4ab9f800a8fd757e44d511fe8265b99ef69b3532.tar.bz2 gst-plugins-bad-4ab9f800a8fd757e44d511fe8265b99ef69b3532.zip |
camerabin: don't leak messages and element refs in preview
-rw-r--r-- | gst/camerabin/camerabinpreview.c | 15 |
1 files changed, 14 insertions, 1 deletions
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", |