summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJuanZhao <juan.j.zhao@intel.com>2010-10-20 08:46:51 +0800
committerDamien Lespiau <damien.lespiau@intel.com>2010-10-20 20:02:51 +0100
commiteeca041e1ac9272705b609ff319390fe7e2e0026 (patch)
tree26af53530231146b1fb168a250a1f9b333db50eb
parent7a9b09e5ef1990021f62bd66ef972a6476721671 (diff)
video-texture: Set the pipeline line state to NULL on error
When playback has finished (an EOS message has been received on the bus) or an error has occured (an ERROR message has been received on the bus), playbin should be set back to READY or NULL state.
-rw-r--r--clutter-gst/clutter-gst-video-texture.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/clutter-gst/clutter-gst-video-texture.c b/clutter-gst/clutter-gst-video-texture.c
index cd4e044..5778099 100644
--- a/clutter-gst/clutter-gst-video-texture.c
+++ b/clutter-gst/clutter-gst-video-texture.c
@@ -1082,11 +1082,14 @@ bus_message_error_cb (GstBus *bus,
ClutterGstVideoTexture *video_texture)
{
GError *error = NULL;
+ ClutterGstVideoTexturePrivate *priv = video_texture->priv;
gst_message_parse_error (message, &error, NULL);
g_signal_emit_by_name (video_texture, "error", error);
+ gst_element_set_state(priv->pipeline, GST_STATE_NULL);
+
g_error_free (error);
}
@@ -1095,11 +1098,14 @@ bus_message_eos_cb (GstBus *bus,
GstMessage *message,
ClutterGstVideoTexture *video_texture)
{
+ ClutterGstVideoTexturePrivate *priv = video_texture->priv;
g_object_notify (G_OBJECT (video_texture), "progress");
CLUTTER_GST_NOTE (MEDIA, "EOS");
g_signal_emit_by_name (video_texture, "eos");
+
+ gst_element_set_state(priv->pipeline, GST_STATE_NULL);
}
static void