seek: handle clock-lost messages
authorWim Taymans <wim.taymans@collabora.co.uk>
Fri, 10 Apr 2009 12:12:53 +0000 (14:12 +0200)
committerWim Taymans <wim.taymans@collabora.co.uk>
Fri, 10 Apr 2009 12:12:53 +0000 (14:12 +0200)
When we receive a clock-lost message we need to pause and play to select a new
clock.

tests/examples/seek/seek.c

index e24fe575138e0674dd1c00f4320332fc9ea6c2ec..1db16aad2dad4301022e69b395a72917ccb2fcdb 100644 (file)
@@ -2144,6 +2144,15 @@ msg_buffering (GstBus * bus, GstMessage * message, GstPipeline * data)
   }
 }
 
+static void
+msg_clock_lost (GstBus * bus, GstMessage * message, GstPipeline * data)
+{
+  g_print ("clock lost! PAUSE and PLAY to select a new clock\n");
+
+  gst_element_set_state (pipeline, GST_STATE_PAUSED);
+  gst_element_set_state (pipeline, GST_STATE_PLAYING);
+}
+
 #ifdef HAVE_X
 
 static guint embed_xid = 0;
@@ -2210,6 +2219,8 @@ connect_bus_signals (GstElement * pipeline)
 
   g_signal_connect (bus, "message::new-clock", (GCallback) message_received,
       pipeline);
+  g_signal_connect (bus, "message::clock-lost", (GCallback) msg_clock_lost,
+      pipeline);
   g_signal_connect (bus, "message::error", (GCallback) message_received,
       pipeline);
   g_signal_connect (bus, "message::warning", (GCallback) message_received,