From 5ad29d568ed0a626677ed5b3b53250f2843d64c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Mon, 1 Oct 2012 15:46:17 +0200 Subject: [PATCH] Don't queue multiple timeouts for delayed seeking --- gst-sdk/tutorials/android-tutorial-1/jni/tutorial-1.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/gst-sdk/tutorials/android-tutorial-1/jni/tutorial-1.c b/gst-sdk/tutorials/android-tutorial-1/jni/tutorial-1.c index c229bc40ec..912667a0d4 100755 --- a/gst-sdk/tutorials/android-tutorial-1/jni/tutorial-1.c +++ b/gst-sdk/tutorials/android-tutorial-1/jni/tutorial-1.c @@ -145,11 +145,13 @@ static void execute_seek (gint64 desired_position, CustomData *data) { if (GST_CLOCK_TIME_IS_VALID (data->last_seek_time) && diff < 500 * GST_MSECOND) { GSource *timeout_source; + if (!GST_CLOCK_TIME_IS_VALID (data->desired_position)) { + timeout_source = g_timeout_source_new (diff / GST_MSECOND); + g_source_attach (timeout_source, data->context); + g_source_set_callback (timeout_source, (GSourceFunc)delayed_seek_cb, data, NULL); + g_source_unref (timeout_source); + } data->desired_position = desired_position; - timeout_source = g_timeout_source_new (diff / GST_MSECOND); - g_source_attach (timeout_source, data->context); - g_source_set_callback (timeout_source, (GSourceFunc)delayed_seek_cb, data, NULL); - g_source_unref (timeout_source); GST_DEBUG ("Throttling seek to %" GST_TIME_FORMAT ", will be in %" GST_TIME_FORMAT, GST_TIME_ARGS (desired_position), GST_TIME_ARGS (500 * GST_MSECOND - diff)); } else {