[GStreamer] cannot play live streams
[WebKit-https.git] / Tools / gtk / patches / udpsrc-improve-timeouts.patch
1 From dbbdf54778771535dfea5ddbdeeaba89d9bc7be6 Mon Sep 17 00:00:00 2001
2 From: Wim Taymans <wim.taymans@collabora.co.uk>
3 Date: Wed, 12 Dec 2012 11:08:13 +0100
4 Subject: [PATCH 1/2] udpsrc: improve timeouts
5
6 Make it possible to set the timeout after we went to the READY state by using
7 the timeout when checking the condition. This also makes it possible to set the
8 timeout with a higher granularity than seconds.
9 ---
10  gst/udp/gstudpsrc.c | 16 ++++++++++------
11  1 file changed, 10 insertions(+), 6 deletions(-)
12
13 diff --git a/gst/udp/gstudpsrc.c b/gst/udp/gstudpsrc.c
14 index bdad5b3..5b54021 100644
15 --- a/gst/udp/gstudpsrc.c
16 +++ b/gst/udp/gstudpsrc.c
17 @@ -397,13 +397,20 @@ retry:
18      goto no_select;
19  
20    do {
21 +    gint64 timeout;
22 +
23      try_again = FALSE;
24  
25 +    if (udpsrc->timeout)
26 +      timeout = udpsrc->timeout / 1000;
27 +    else
28 +      timeout = -1;
29 +
30      GST_LOG_OBJECT (udpsrc, "doing select, timeout %" G_GUINT64_FORMAT,
31 -        udpsrc->timeout);
32 +        timeout);
33  
34 -    if (!g_socket_condition_wait (udpsrc->used_socket, G_IO_IN | G_IO_PRI,
35 -            udpsrc->cancellable, &err)) {
36 +    if (!g_socket_condition_timed_wait (udpsrc->used_socket, G_IO_IN | G_IO_PRI,
37 +            timeout, udpsrc->cancellable, &err)) {
38        if (g_error_matches (err, G_IO_ERROR, G_IO_ERROR_BUSY)
39            || g_error_matches (err, G_IO_ERROR, G_IO_ERROR_CANCELLED)) {
40          goto stopped;
41 @@ -823,9 +830,6 @@ gst_udpsrc_start (GstBaseSrc * bsrc)
42        goto getsockname_error;
43    }
44  
45 -  if (src->timeout)
46 -    g_socket_set_timeout (src->used_socket, src->timeout / GST_SECOND);
47 -
48  #if GLIB_CHECK_VERSION (2, 35, 7)
49    {
50      gint val = 0;
51 -- 
52 1.8.1.2
53