summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog13
-rw-r--r--configure.ac3
-rw-r--r--examples/gstplay/player.c2
-rw-r--r--gst-libs/gst/play/gstplay.c12
-rw-r--r--gst-libs/gst/play/play.c12
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 <julien@moutte.net>
+
+ * 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 <rbultje@ronald.bitfreak.net>
* 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) {