From a7d6c07b86bfb785f1d52b8e975cea7e06ea499f Mon Sep 17 00:00:00 2001 From: Martin Kelly Date: Wed, 17 Feb 2016 09:36:15 -0800 Subject: [PATCH] amc: properly deinit when ahcsrc register fails In the androidmedia plugin_init, we initialize various resources on the Android device. If anything fails during this series of initializations, we need to deinitialize any initializations that already occurred. However, we don't do so if we fail to register the ahcsrc element. Fix this. https://bugzilla.gnome.org/show_bug.cgi?id=763065 --- sys/androidmedia/gstamc.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/sys/androidmedia/gstamc.c b/sys/androidmedia/gstamc.c index 5b4e93618f..1733ca2290 100644 --- a/sys/androidmedia/gstamc.c +++ b/sys/androidmedia/gstamc.c @@ -3327,22 +3327,27 @@ plugin_init (GstPlugin * plugin) if (!gst_android_graphics_imageformat_init ()) { GST_ERROR ("Failed to init android image format"); - gst_android_graphics_surfacetexture_deinit (); - return FALSE; + goto failed_surfacetexture; } if (!gst_android_hardware_camera_init ()) { - gst_android_graphics_surfacetexture_deinit (); - gst_android_graphics_imageformat_deinit (); - return FALSE; + goto failed_graphics_imageformat; } if (!gst_element_register (plugin, "ahcsrc", GST_RANK_NONE, GST_TYPE_AHC_SRC)) { GST_ERROR ("Failed to register android camera source"); - return FALSE; + goto failed_hardware_camera; } return TRUE; + +failed_hardware_camera: + gst_android_hardware_camera_deinit (); +failed_graphics_imageformat: + gst_android_graphics_imageformat_deinit (); +failed_surfacetexture: + gst_android_graphics_surfacetexture_deinit (); + return FALSE; } void