summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Kelly <martin@surround.io>2016-02-17 09:36:15 -0800
committerSebastian Dröge <sebastian@centricular.com>2016-03-04 09:42:14 +0200
commita7d6c07b86bfb785f1d52b8e975cea7e06ea499f (patch)
tree9427c3cf8d6ede2b2a8a504268c4c5a0c7fc9535
parentddebf1ff666c3d24759325cd9482c11b0a5d095c (diff)
downloadgstreamer-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
-rw-r--r--sys/androidmedia/gstamc.c17
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