mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-24 02:31:03 +00:00
tests: camerabin: Some leak fixes
Leak fixes related to removing the source returned from gst_bus_add_watch
This commit is contained in:
parent
290d598748
commit
8a9a0cd37e
1 changed files with 8 additions and 2 deletions
|
@ -47,6 +47,7 @@
|
||||||
#define PHOTO_SETTING_DELAY_US 0
|
#define PHOTO_SETTING_DELAY_US 0
|
||||||
|
|
||||||
static GstElement *camera;
|
static GstElement *camera;
|
||||||
|
static guint bus_source;
|
||||||
static GMainLoop *main_loop;
|
static GMainLoop *main_loop;
|
||||||
static guint cycle_count = 0;
|
static guint cycle_count = 0;
|
||||||
static gboolean received_preview_msg = FALSE;
|
static gboolean received_preview_msg = FALSE;
|
||||||
|
@ -290,7 +291,7 @@ setup (void)
|
||||||
g_signal_connect (camera, "image-done", G_CALLBACK (capture_done), main_loop);
|
g_signal_connect (camera, "image-done", G_CALLBACK (capture_done), main_loop);
|
||||||
|
|
||||||
bus = gst_pipeline_get_bus (GST_PIPELINE (camera));
|
bus = gst_pipeline_get_bus (GST_PIPELINE (camera));
|
||||||
gst_bus_add_watch (bus, (GstBusFunc) capture_bus_cb, main_loop);
|
bus_source = gst_bus_add_watch (bus, (GstBusFunc) capture_bus_cb, main_loop);
|
||||||
gst_bus_set_sync_handler (bus, bus_sync_callback, main_loop);
|
gst_bus_set_sync_handler (bus, bus_sync_callback, main_loop);
|
||||||
gst_object_unref (bus);
|
gst_object_unref (bus);
|
||||||
|
|
||||||
|
@ -335,6 +336,8 @@ teardown (void)
|
||||||
{
|
{
|
||||||
gint i;
|
gint i;
|
||||||
|
|
||||||
|
g_source_remove (bus_source);
|
||||||
|
|
||||||
if (camera)
|
if (camera)
|
||||||
gst_check_teardown_element (camera);
|
gst_check_teardown_element (camera);
|
||||||
|
|
||||||
|
@ -444,6 +447,7 @@ extract_jpeg_tags (const gchar * filename, gint num)
|
||||||
static gboolean
|
static gboolean
|
||||||
check_file_validity (const gchar * filename, gint num, GstTagList * taglist)
|
check_file_validity (const gchar * filename, gint num, GstTagList * taglist)
|
||||||
{
|
{
|
||||||
|
guint source;
|
||||||
GstBus *bus;
|
GstBus *bus;
|
||||||
GMainLoop *loop = g_main_loop_new (NULL, FALSE);
|
GMainLoop *loop = g_main_loop_new (NULL, FALSE);
|
||||||
GstElement *playbin = gst_element_factory_make ("playbin2", NULL);
|
GstElement *playbin = gst_element_factory_make ("playbin2", NULL);
|
||||||
|
@ -458,7 +462,7 @@ check_file_validity (const gchar * filename, gint num, GstTagList * taglist)
|
||||||
|
|
||||||
validation_taglist = NULL;
|
validation_taglist = NULL;
|
||||||
bus = gst_pipeline_get_bus (GST_PIPELINE (playbin));
|
bus = gst_pipeline_get_bus (GST_PIPELINE (playbin));
|
||||||
gst_bus_add_watch (bus, (GstBusFunc) validity_bus_cb, loop);
|
source = gst_bus_add_watch (bus, (GstBusFunc) validity_bus_cb, loop);
|
||||||
|
|
||||||
gst_element_set_state (playbin, GST_STATE_PLAYING);
|
gst_element_set_state (playbin, GST_STATE_PLAYING);
|
||||||
g_main_loop_run (loop);
|
g_main_loop_run (loop);
|
||||||
|
@ -484,8 +488,10 @@ check_file_validity (const gchar * filename, gint num, GstTagList * taglist)
|
||||||
gst_tag_list_free (validation_taglist);
|
gst_tag_list_free (validation_taglist);
|
||||||
|
|
||||||
g_free (uri);
|
g_free (uri);
|
||||||
|
g_source_remove (source);
|
||||||
gst_object_unref (bus);
|
gst_object_unref (bus);
|
||||||
gst_object_unref (playbin);
|
gst_object_unref (playbin);
|
||||||
|
g_main_loop_unref (loop);
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue