From 4062b8106a69efed1307c47e68e0cc28f68308ec Mon Sep 17 00:00:00 2001 From: Julien Moutte Date: Sun, 21 Dec 2003 19:48:40 +0000 Subject: configure.ac: X_DISPLAY_MISSING is set to 1 if AC_PATH_XTRA fails to find X development files. I don't understand the... Original commit message from CVS: * configure.ac: X_DISPLAY_MISSING is set to 1 if AC_PATH_XTRA fails to find X development files. I don't understand the previous tests and they fail on my debian/ppc unstable. This one works. * examples/gstplay/player.c: (main): Set the pipeline to READY before exiting. * gst-libs/gst/play/gstplay.c: (gst_play_get_length_callback), (gst_play_set_video_sink), (gst_play_set_audio_sink), (gst_play_set_visualization): Add some safety checks in set_ methods and state_change. This was throwing some ugly CRITICAL messages when pipeline was getting disposed and casts were failing. --- ChangeLog | 13 +++++++++++++ configure.ac | 3 ++- examples/gstplay/player.c | 2 ++ gst-libs/gst/play/gstplay.c | 12 ++++++++++-- gst-libs/gst/play/play.c | 12 ++++++++++-- 5 files changed, 37 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5c3eb26d..5e6b59e6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +2003-12-21 Julien MOUTTE + + * configure.ac: X_DISPLAY_MISSING is set to 1 if AC_PATH_XTRA fails to + find X development files. I don't understand the previous tests and + they fail on my debian/ppc unstable. This one works. + * examples/gstplay/player.c: (main): Set the pipeline to READY before + exiting. + * gst-libs/gst/play/gstplay.c: (gst_play_get_length_callback), + (gst_play_set_video_sink), (gst_play_set_audio_sink), + (gst_play_set_visualization): Add some safety checks in set_ methods + and state_change. This was throwing some ugly CRITICAL messages when + pipeline was getting disposed and casts were failing. + 2003-12-21 Ronald Bultje * configure.ac: diff --git a/configure.ac b/configure.ac index 6055d3b8..b2d342ca 100644 --- a/configure.ac +++ b/configure.ac @@ -505,7 +505,8 @@ translit(dnm, m, l) AM_CONDITIONAL(USE_X, true) GST_CHECK_FEATURE(X, [X libraries and plugins], [ximagesink], [ AC_PATH_XTRA - if test "x$X_CFLAGS" == "x" -o "$X_CFLAGS" == "-DX_DISPLAY_MISSING" +dnl if test "x$X_CFLAGS" == "x" -o "$X_CFLAGS" == "-DX_DISPLAY_MISSING" + if test "x$X_DISPLAY_MISSING" = "x1" then AC_MSG_NOTICE([cannot find X11 development files]) HAVE_X="no" diff --git a/examples/gstplay/player.c b/examples/gstplay/player.c index 41fbb546..ef58e326 100644 --- a/examples/gstplay/player.c +++ b/examples/gstplay/player.c @@ -149,6 +149,8 @@ main (int argc, char *argv[]) g_main_loop_run (loop); + gst_element_set_state (GST_ELEMENT (play), GST_STATE_READY); + /* unref */ gst_object_unref (GST_OBJECT (play)); diff --git a/gst-libs/gst/play/gstplay.c b/gst-libs/gst/play/gstplay.c index 7a0838ee..eb4d161c 100644 --- a/gst-libs/gst/play/gstplay.c +++ b/gst-libs/gst/play/gstplay.c @@ -304,8 +304,10 @@ gst_play_get_length_callback (GstPlay *play) } /* Audio first and then Video */ - q = gst_element_query (audio_sink_element, GST_QUERY_TOTAL, &format, &value); - if (!q) + if (GST_IS_ELEMENT (audio_sink_element)) + q = gst_element_query (audio_sink_element, GST_QUERY_TOTAL, &format, + &value); + if ( (!q) && (GST_IS_ELEMENT (video_sink_element)) ) q = gst_element_query (video_sink_element, GST_QUERY_TOTAL, &format, &value); @@ -647,6 +649,8 @@ gst_play_set_video_sink (GstPlay *play, GstElement *video_sink) g_return_val_if_fail (play != NULL, FALSE); g_return_val_if_fail (GST_IS_PLAY (play), FALSE); + g_return_val_if_fail (video_sink != NULL, FALSE); + g_return_val_if_fail (GST_IS_ELEMENT (video_sink), FALSE); /* We bring back the pipeline to READY */ if (GST_STATE (GST_ELEMENT (play)) != GST_STATE_READY) @@ -703,6 +707,8 @@ gst_play_set_audio_sink (GstPlay *play, GstElement *audio_sink) g_return_val_if_fail (play != NULL, FALSE); g_return_val_if_fail (GST_IS_PLAY (play), FALSE); + g_return_val_if_fail (audio_sink != NULL, FALSE); + g_return_val_if_fail (GST_IS_ELEMENT (audio_sink), FALSE); /* We bring back the pipeline to READY */ if (GST_STATE (GST_ELEMENT (play)) != GST_STATE_READY) @@ -767,6 +773,8 @@ gst_play_set_visualization (GstPlay *play, GstElement *vis_element) g_return_val_if_fail (play != NULL, FALSE); g_return_val_if_fail (GST_IS_PLAY (play), FALSE); + g_return_val_if_fail (vis_element != NULL, FALSE); + g_return_val_if_fail (GST_IS_ELEMENT (vis_element), FALSE); /* We bring back the pipeline to READY */ if (GST_STATE (GST_ELEMENT (play)) == GST_STATE_PLAYING) { diff --git a/gst-libs/gst/play/play.c b/gst-libs/gst/play/play.c index 7a0838ee..eb4d161c 100644 --- a/gst-libs/gst/play/play.c +++ b/gst-libs/gst/play/play.c @@ -304,8 +304,10 @@ gst_play_get_length_callback (GstPlay *play) } /* Audio first and then Video */ - q = gst_element_query (audio_sink_element, GST_QUERY_TOTAL, &format, &value); - if (!q) + if (GST_IS_ELEMENT (audio_sink_element)) + q = gst_element_query (audio_sink_element, GST_QUERY_TOTAL, &format, + &value); + if ( (!q) && (GST_IS_ELEMENT (video_sink_element)) ) q = gst_element_query (video_sink_element, GST_QUERY_TOTAL, &format, &value); @@ -647,6 +649,8 @@ gst_play_set_video_sink (GstPlay *play, GstElement *video_sink) g_return_val_if_fail (play != NULL, FALSE); g_return_val_if_fail (GST_IS_PLAY (play), FALSE); + g_return_val_if_fail (video_sink != NULL, FALSE); + g_return_val_if_fail (GST_IS_ELEMENT (video_sink), FALSE); /* We bring back the pipeline to READY */ if (GST_STATE (GST_ELEMENT (play)) != GST_STATE_READY) @@ -703,6 +707,8 @@ gst_play_set_audio_sink (GstPlay *play, GstElement *audio_sink) g_return_val_if_fail (play != NULL, FALSE); g_return_val_if_fail (GST_IS_PLAY (play), FALSE); + g_return_val_if_fail (audio_sink != NULL, FALSE); + g_return_val_if_fail (GST_IS_ELEMENT (audio_sink), FALSE); /* We bring back the pipeline to READY */ if (GST_STATE (GST_ELEMENT (play)) != GST_STATE_READY) @@ -767,6 +773,8 @@ gst_play_set_visualization (GstPlay *play, GstElement *vis_element) g_return_val_if_fail (play != NULL, FALSE); g_return_val_if_fail (GST_IS_PLAY (play), FALSE); + g_return_val_if_fail (vis_element != NULL, FALSE); + g_return_val_if_fail (GST_IS_ELEMENT (vis_element), FALSE); /* We bring back the pipeline to READY */ if (GST_STATE (GST_ELEMENT (play)) == GST_STATE_PLAYING) { -- cgit v1.2.1