diff options
author | Martin Kelly <martin@surround.io> | 2016-02-17 09:36:15 -0800 |
---|---|---|
committer | Sebastian Dröge <sebastian@centricular.com> | 2016-03-04 09:42:14 +0200 |
commit | a7d6c07b86bfb785f1d52b8e975cea7e06ea499f (patch) | |
tree | 9427c3cf8d6ede2b2a8a504268c4c5a0c7fc9535 /sys/androidmedia/gstamc.c | |
parent | ddebf1ff666c3d24759325cd9482c11b0a5d095c (diff) | |
download | gstreamer-plugins-bad-a7d6c07b86bfb785f1d52b8e975cea7e06ea499f.tar.gz |
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
Diffstat (limited to 'sys/androidmedia/gstamc.c')
-rw-r--r-- | sys/androidmedia/gstamc.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/sys/androidmedia/gstamc.c b/sys/androidmedia/gstamc.c index 5b4e93618..1733ca229 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 |