From a9bd47747075f3b0e712c44731794e3ef3f3b865 Mon Sep 17 00:00:00 2001 From: Julien Moutte Date: Thu, 10 Apr 2003 13:20:02 +0000 Subject: Adding a lot of sanity checks Original commit message from CVS: Adding a lot of sanity checks Checking if vis pad is connected before linking/unlinking --- gst-libs/gst/play/play.old.c | 49 +++++++++++++++++++++++++-------------- gst-libs/gst/play/playpipelines.c | 33 ++++++++++++++++++++++---- 2 files changed, 61 insertions(+), 21 deletions(-) diff --git a/gst-libs/gst/play/play.old.c b/gst-libs/gst/play/play.old.c index 88a370d5..dd322896 100644 --- a/gst-libs/gst/play/play.old.c +++ b/gst-libs/gst/play/play.old.c @@ -152,8 +152,9 @@ gst_play_set_property ( GObject *object, const GValue *value, GParamSpec *pspec) { - GstPlay *play = GST_PLAY (object); - + GstPlay *play; + g_return_if_fail (object != NULL); + play = GST_PLAY (object); g_return_if_fail (GST_IS_PLAY (play)); switch (prop_id) { @@ -178,8 +179,9 @@ gst_play_get_property ( GObject *object, GValue *value, GParamSpec *pspec) { - GstPlay *play = GST_PLAY (object); - + GstPlay *play; + g_return_if_fail (object != NULL); + play = GST_PLAY (object); g_return_if_fail (GST_IS_PLAY (play)); switch (prop_id) { @@ -242,7 +244,8 @@ gst_play_tick_callback (GstPlay *play) { gint secs; - g_return_val_if_fail(GST_IS_PLAY(play), FALSE); + g_return_val_if_fail (play != NULL, FALSE); + g_return_val_if_fail (GST_IS_PLAY(play), FALSE); play->clock = gst_bin_get_clock (GST_BIN (play->pipeline)); play->time_nanos = gst_clock_get_time(play->clock); @@ -293,7 +296,8 @@ gst_play_default_idle_add ( GSourceFunc function, static gboolean gst_play_idle_callback (GstPlay *play) { - g_return_val_if_fail(GST_IS_PLAY(play), FALSE); + g_return_val_if_fail (play != NULL, FALSE); + g_return_val_if_fail (GST_IS_PLAY(play), FALSE); return gst_bin_iterate (GST_BIN (play->pipeline)); } @@ -304,7 +308,8 @@ gst_play_idle_signal (GstPlay *play) GstPlaySignal *signal; gint queue_length; - g_return_val_if_fail(GST_IS_PLAY(play), FALSE); + g_return_val_if_fail (play != NULL, FALSE); + g_return_val_if_fail (GST_IS_PLAY(play), FALSE); signal = g_async_queue_try_pop(play->signal_queue); if (signal == NULL){ @@ -457,6 +462,8 @@ callback_pipeline_state_change ( GstElement *element, { GstPlaySignal *signal; + g_return_if_fail (play != NULL); + g_return_if_fail (element != NULL); g_return_if_fail (GST_IS_ELEMENT (element)); g_return_if_fail (GST_IS_PLAY (play)); g_return_if_fail (element == play->pipeline); @@ -689,6 +696,7 @@ gst_play_seek_to_time ( GstPlay *play, gboolean video_seek_worked = FALSE; gboolean visualisation_seek_worked = FALSE; + g_return_if_fail (play != NULL); g_return_if_fail (GST_IS_PLAY (play)); if (time_nanos < 0LL){ play->seek_time = 0LL; @@ -757,6 +765,7 @@ gst_play_set_idle_timeout_funcs ( GstPlay *play, GstPlayTimeoutAdd timeout_add_func, GstPlayIdleAdd idle_add_func) { + g_return_if_fail (play != NULL); g_return_if_fail (GST_IS_PLAY (play)); play->timeout_add_func = timeout_add_func; play->idle_add_func = idle_add_func; @@ -782,6 +791,8 @@ gst_play_get_sink_element ( GstPlay *play, const GList *pads = NULL; gboolean has_src, has_correct_type; + g_return_val_if_fail (play != NULL, NULL); + g_return_val_if_fail (element != NULL, NULL); g_return_val_if_fail (GST_IS_PLAY (play), NULL); g_return_val_if_fail (GST_IS_ELEMENT (element), NULL); @@ -885,9 +896,9 @@ GstElementStateReturn gst_play_set_state ( GstPlay *play, GstElementState state) { + g_return_val_if_fail (play != NULL, GST_STATE_FAILURE); g_return_val_if_fail (GST_IS_PLAY (play), GST_STATE_FAILURE); g_return_val_if_fail (GST_IS_ELEMENT(play->pipeline), GST_STATE_FAILURE); - /*g_print("setting state to %d\n", state);*/ return gst_element_set_state(play->pipeline, state); } @@ -903,6 +914,7 @@ gst_play_set_state ( GstPlay *play, GstElementState gst_play_get_state (GstPlay *play) { + g_return_val_if_fail (play != NULL, GST_STATE_FAILURE); g_return_val_if_fail (GST_IS_PLAY (play), GST_STATE_FAILURE); g_return_val_if_fail (play->pipeline, GST_STATE_FAILURE); @@ -923,6 +935,7 @@ gst_play_set_location ( GstPlay *play, const gchar *location) { GstElementState current_state; + g_return_val_if_fail (play != NULL, FALSE); g_return_val_if_fail (GST_IS_PLAY (play), FALSE); g_return_val_if_fail (location != NULL, FALSE); @@ -964,6 +977,7 @@ gchar* gst_play_get_location (GstPlay *play) { gchar* location; + g_return_val_if_fail (play != NULL, NULL); g_return_val_if_fail (GST_IS_PLAY (play), NULL); g_return_val_if_fail (GST_IS_ELEMENT(play->source), NULL); g_object_get (G_OBJECT (play->source), "location", &location, NULL); @@ -981,6 +995,7 @@ void gst_play_set_volume ( GstPlay *play, gfloat volume) { + g_return_if_fail (play != NULL); g_return_if_fail (GST_IS_PLAY (play)); g_object_set(G_OBJECT(play->vol_dparam), "value_float", volume, NULL); @@ -999,6 +1014,7 @@ gst_play_get_volume (GstPlay *play) { gfloat volume; + g_return_val_if_fail (play != NULL, 0); g_return_val_if_fail (GST_IS_PLAY (play), 0); g_object_get(G_OBJECT(play->vol_dparam), "value_float", &volume, NULL); @@ -1017,6 +1033,7 @@ void gst_play_set_mute ( GstPlay *play, gboolean mute) { + g_return_if_fail (play != NULL); g_return_if_fail (GST_IS_PLAY (play)); g_object_set (G_OBJECT (play->volume), "mute", mute, NULL); @@ -1035,6 +1052,7 @@ gst_play_get_mute (GstPlay *play) { gboolean mute; + g_return_val_if_fail (play != NULL, 0); g_return_val_if_fail (GST_IS_PLAY (play), 0); g_object_get (G_OBJECT (play->volume), "mute", &mute, NULL); @@ -1061,6 +1079,8 @@ gboolean gst_play_set_data_src ( GstPlay *play, GstElement *data_src) { + g_return_val_if_fail (play != NULL, FALSE); + g_return_val_if_fail (data_src != NULL, FALSE); g_return_val_if_fail (GST_IS_PLAY (play), FALSE); g_return_val_if_fail (GST_IS_ELEMENT (data_src), FALSE); @@ -1089,6 +1109,8 @@ gboolean gst_play_set_video_sink ( GstPlay *play, GstElement *video_sink) { + g_return_val_if_fail (play != NULL, FALSE); + g_return_val_if_fail (video_sink != NULL, FALSE); g_return_val_if_fail (GST_IS_PLAY (play), FALSE); g_return_val_if_fail (GST_IS_ELEMENT (video_sink), FALSE); @@ -1117,6 +1139,8 @@ gboolean gst_play_set_audio_sink ( GstPlay *play, GstElement *audio_sink) { + g_return_val_if_fail (play != NULL, FALSE); + g_return_val_if_fail (audio_sink != NULL, FALSE); g_return_val_if_fail (GST_IS_PLAY (play), FALSE); g_return_val_if_fail (GST_IS_ELEMENT (audio_sink), FALSE); @@ -1267,12 +1291,3 @@ gst_play_new ( GstPlayPipeType pipe_type, return play; } - - - - - - - - - diff --git a/gst-libs/gst/play/playpipelines.c b/gst-libs/gst/play/playpipelines.c index 163d1a2d..dc977bcf 100644 --- a/gst-libs/gst/play/playpipelines.c +++ b/gst-libs/gst/play/playpipelines.c @@ -27,6 +27,8 @@ gst_play_default_set_data_src ( GstPlay *play, GstElement *datasrc, GstElement* parent) { + g_return_val_if_fail (play != NULL, FALSE); + g_return_val_if_fail (datasrc != NULL, FALSE); g_return_val_if_fail (GST_IS_PLAY (play), FALSE); g_return_val_if_fail (GST_IS_ELEMENT (datasrc), FALSE); @@ -125,7 +127,7 @@ static gboolean gst_play_audiot_setup ( GstPlay *play, GError **error) { - + g_return_val_if_fail (play != NULL, FALSE); g_return_val_if_fail (GST_IS_PLAY(play), FALSE); /* creating gst_thread */ @@ -183,6 +185,8 @@ static gboolean gst_play_audiot_set_audio ( GstPlay *play, GstElement *audio_sink) { + g_return_val_if_fail (play != NULL, FALSE); + g_return_val_if_fail (audio_sink != NULL, FALSE); g_return_val_if_fail (GST_IS_PLAY(play), FALSE); g_return_val_if_fail (GST_IS_ELEMENT (audio_sink), FALSE); @@ -219,7 +223,8 @@ static gboolean gst_play_audiot_set_auto ( GstPlay *play, GstElement *autoplugger) { - + g_return_val_if_fail (play != NULL, FALSE); + g_return_val_if_fail (autoplugger != NULL, FALSE); g_return_val_if_fail (GST_IS_PLAY (play), FALSE); g_return_val_if_fail (GST_IS_ELEMENT (autoplugger), FALSE); @@ -251,6 +256,7 @@ gst_play_audioht_setup ( GstPlay *play, { GstElement *audio_thread, *audio_queue; + g_return_val_if_fail (play != NULL, FALSE); g_return_val_if_fail (GST_IS_PLAY(play), FALSE); /* @@ -337,6 +343,8 @@ gst_play_audioht_set_audio ( GstPlay *play, { GstElement *audio_thread; + g_return_val_if_fail (play != NULL, FALSE); + g_return_val_if_fail (audio_sink != NULL, FALSE); g_return_val_if_fail (GST_IS_PLAY(play), FALSE); g_return_val_if_fail (GST_IS_ELEMENT (audio_sink), FALSE); @@ -377,6 +385,8 @@ gst_play_audioht_set_auto ( GstPlay *play, { GstElement *audio_thread; + g_return_val_if_fail (play != NULL, FALSE); + g_return_val_if_fail (autoplugger != NULL, FALSE); g_return_val_if_fail (GST_IS_PLAY(play), FALSE); g_return_val_if_fail (GST_IS_ELEMENT (autoplugger), FALSE); @@ -413,6 +423,7 @@ gst_play_video_setup ( GstPlay *play, GstElement *video_queue, *video_bin; GstElement *work_thread, *colorspace; + g_return_val_if_fail (play != NULL, FALSE); g_return_val_if_fail (GST_IS_PLAY(play), FALSE); /* creating pipeline */ @@ -558,7 +569,10 @@ gst_play_video_set_data_src ( GstPlay *play, GstElement *datasrc) { GstElement *work_thread; + g_return_val_if_fail (play != NULL, FALSE); + g_return_val_if_fail (datasrc != NULL, FALSE); g_return_val_if_fail (GST_IS_PLAY(play), FALSE); + g_return_val_if_fail (GST_IS_ELEMENT(datasrc), FALSE); work_thread = g_hash_table_lookup(play->other_elements, "work_thread"); return gst_play_default_set_data_src(play, datasrc, work_thread); @@ -572,6 +586,7 @@ gst_play_video_set_auto ( GstPlay *play, GstElement *audio_bin, *video_bin, *work_thread; g_return_val_if_fail (play != NULL, FALSE); + g_return_val_if_fail (autoplugger != NULL, FALSE); g_return_val_if_fail (GST_IS_PLAY(play), FALSE); g_return_val_if_fail (GST_IS_ELEMENT (autoplugger), FALSE); @@ -607,6 +622,8 @@ gst_play_video_set_video ( GstPlay *play, { GstElement *video_mate, *video_bin; + g_return_val_if_fail (play != NULL, FALSE); + g_return_val_if_fail (video_sink != NULL, FALSE); g_return_val_if_fail (GST_IS_PLAY(play), FALSE); g_return_val_if_fail (GST_IS_ELEMENT (video_sink), FALSE); @@ -651,6 +668,8 @@ gst_play_video_set_audio ( GstPlay *play, { GstElement *audio_bin; + g_return_val_if_fail (play != NULL, FALSE); + g_return_val_if_fail (audio_sink != NULL, FALSE); g_return_val_if_fail (GST_IS_PLAY(play), FALSE); g_return_val_if_fail (GST_IS_ELEMENT (audio_sink), FALSE); @@ -1172,6 +1191,7 @@ gst_play_connect_visualisation ( GstPlay *play, gboolean connect) { GstPad *tee_vis_pad, *vis_video_thread_pad; + gboolean connected = FALSE; g_return_val_if_fail (play != NULL, FALSE); g_return_val_if_fail (GST_IS_PLAY(play), FALSE); @@ -1181,10 +1201,15 @@ gst_play_connect_visualisation ( GstPlay *play, vis_video_thread_pad = g_hash_table_lookup( play->other_elements, "vis_video_thread_pad"); - if (connect) { + if (gst_pad_get_peer (vis_video_thread_pad) != NULL) + connected = TRUE; + else + connected = FALSE; + + if ( (connect) && (!connected) ) { gst_pad_link (tee_vis_pad, vis_video_thread_pad); } - else { + else if ( (!connect) && (connected) ){ gst_pad_unlink (tee_vis_pad, vis_video_thread_pad); } -- cgit v1.2.1