diff options
Diffstat (limited to 'Tools/gtk/patches/udpsrc-improve-timeouts.patch')
-rw-r--r-- | Tools/gtk/patches/udpsrc-improve-timeouts.patch | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/Tools/gtk/patches/udpsrc-improve-timeouts.patch b/Tools/gtk/patches/udpsrc-improve-timeouts.patch new file mode 100644 index 000000000..d26e346a8 --- /dev/null +++ b/Tools/gtk/patches/udpsrc-improve-timeouts.patch @@ -0,0 +1,53 @@ +From dbbdf54778771535dfea5ddbdeeaba89d9bc7be6 Mon Sep 17 00:00:00 2001 +From: Wim Taymans <wim.taymans@collabora.co.uk> +Date: Wed, 12 Dec 2012 11:08:13 +0100 +Subject: [PATCH 1/2] udpsrc: improve timeouts + +Make it possible to set the timeout after we went to the READY state by using +the timeout when checking the condition. This also makes it possible to set the +timeout with a higher granularity than seconds. +--- + gst/udp/gstudpsrc.c | 16 ++++++++++------ + 1 file changed, 10 insertions(+), 6 deletions(-) + +diff --git a/gst/udp/gstudpsrc.c b/gst/udp/gstudpsrc.c +index bdad5b3..5b54021 100644 +--- a/gst/udp/gstudpsrc.c ++++ b/gst/udp/gstudpsrc.c +@@ -397,13 +397,20 @@ retry: + goto no_select; + + do { ++ gint64 timeout; ++ + try_again = FALSE; + ++ if (udpsrc->timeout) ++ timeout = udpsrc->timeout / 1000; ++ else ++ timeout = -1; ++ + GST_LOG_OBJECT (udpsrc, "doing select, timeout %" G_GUINT64_FORMAT, +- udpsrc->timeout); ++ timeout); + +- if (!g_socket_condition_wait (udpsrc->used_socket, G_IO_IN | G_IO_PRI, +- udpsrc->cancellable, &err)) { ++ if (!g_socket_condition_timed_wait (udpsrc->used_socket, G_IO_IN | G_IO_PRI, ++ timeout, udpsrc->cancellable, &err)) { + if (g_error_matches (err, G_IO_ERROR, G_IO_ERROR_BUSY) + || g_error_matches (err, G_IO_ERROR, G_IO_ERROR_CANCELLED)) { + goto stopped; +@@ -823,9 +830,6 @@ gst_udpsrc_start (GstBaseSrc * bsrc) + goto getsockname_error; + } + +- if (src->timeout) +- g_socket_set_timeout (src->used_socket, src->timeout / GST_SECOND); +- + #if GLIB_CHECK_VERSION (2, 35, 7) + { + gint val = 0; +-- +1.8.1.2 + |