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;
goto getsockname_error;
}
- if (src->timeout)
- g_socket_set_timeout (src->used_socket, src->timeout / GST_SECOND);
-
#ifdef SO_RCVBUF
{
gint rcvsize, ret;