{
GstPoll *nset;
+ GST_DEBUG ("controllable : %d", controllable);
+
nset = g_slice_new0 (GstPoll);
nset->lock = g_mutex_new ();
#ifndef G_OS_WIN32
{
g_return_if_fail (set != NULL);
+ GST_DEBUG_OBJECT (set, "Freeing");
+
#ifndef G_OS_WIN32
if (set->control_write_fd.fd >= 0)
close (set->control_write_fd.fd);
{
gint idx;
+ GST_DEBUG_OBJECT (set, "fd (fd:%d, idx:%d)", fd->fd, fd->idx);
+
idx = find_index (set->fds, fd);
if (idx < 0) {
#ifndef G_OS_WIN32
fd->idx = set->fds->len - 1;
#endif
+ } else {
+ GST_WARNING_OBJECT (set, "Couldn't find fd !");
}
return TRUE;
g_return_val_if_fail (fd != NULL, FALSE);
g_return_val_if_fail (fd->fd >= 0, FALSE);
+
+ GST_DEBUG_OBJECT (set, "fd (fd:%d, idx:%d)", fd->fd, fd->idx);
+
g_mutex_lock (set->lock);
/* get the index, -1 is an fd that is not added */
/* mark fd as removed by setting the index to -1 */
fd->idx = -1;
+ } else {
+ GST_WARNING_OBJECT (set, "Couldn't find fd !");
}
g_mutex_unlock (set->lock);
g_return_val_if_fail (fd != NULL, FALSE);
g_return_val_if_fail (fd->fd >= 0, FALSE);
+ GST_DEBUG_OBJECT (set, "fd (fd:%d, idx:%d), active : %d",
+ fd->fd, fd->idx, active);
+
g_mutex_lock (set->lock);
idx = find_index (set->fds, fd);
pfd->events |= POLLOUT;
else
pfd->events &= ~POLLOUT;
+
+ GST_LOG ("pfd->events now %d (POLLOUT:%d)", pfd->events, POLLOUT);
#else
gst_poll_update_winsock_event_mask (set, idx, FD_WRITE | FD_CONNECT,
active);
#endif
+ } else {
+ GST_WARNING_OBJECT (set, "Couldn't find fd !");
}
g_mutex_unlock (set->lock);
{
gint idx;
+ GST_DEBUG_OBJECT (set, "fd (fd:%d, idx:%d), active : %d",
+ fd->fd, fd->idx, active);
+
idx = find_index (set->fds, fd);
if (idx >= 0) {
#else
gst_poll_update_winsock_event_mask (set, idx, FD_READ | FD_ACCEPT, active);
#endif
+ } else {
+ GST_WARNING_OBJECT (set, "Couldn't find fd !");
}
return idx >= 0;
g_return_val_if_fail (fd != NULL, FALSE);
g_return_val_if_fail (fd->fd >= 0, FALSE);
+ GST_DEBUG_OBJECT (set, "fd (fd:%d, idx:%d)", fd->fd, fd->idx);
+
g_mutex_lock (set->lock);
idx = find_index (set->active_fds, fd);
res = (wfd->events.lNetworkEvents & FD_CLOSE) != 0;
#endif
+ } else {
+ GST_WARNING_OBJECT (set, "Couldn't find fd !");
}
g_mutex_unlock (set->lock);
g_return_val_if_fail (fd != NULL, FALSE);
g_return_val_if_fail (fd->fd >= 0, FALSE);
+ GST_DEBUG_OBJECT (set, "fd (fd:%d, idx:%d)", fd->fd, fd->idx);
+
g_mutex_lock (set->lock);
idx = find_index (set->active_fds, fd);
(wfd->events.iErrorCode[FD_ACCEPT_BIT] != 0) ||
(wfd->events.iErrorCode[FD_CONNECT_BIT] != 0);
#endif
+ } else {
+ GST_WARNING_OBJECT (set, "Couldn't find fd !");
}
g_mutex_unlock (set->lock);
gboolean res = FALSE;
gint idx;
+ GST_DEBUG_OBJECT (set, "fd (fd:%d, idx:%d)", fd->fd, fd->idx);
+
idx = find_index (set->active_fds, fd);
if (idx >= 0) {
#ifndef G_OS_WIN32
res = (wfd->events.lNetworkEvents & (FD_READ | FD_ACCEPT)) != 0;
#endif
+ } else {
+ GST_WARNING_OBJECT (set, "Couldn't find fd !");
}
return res;
g_return_val_if_fail (fd != NULL, FALSE);
g_return_val_if_fail (fd->fd >= 0, FALSE);
+ GST_DEBUG_OBJECT (set, "fd (fd:%d, idx:%d)", fd->fd, fd->idx);
+
g_mutex_lock (set->lock);
idx = find_index (set->active_fds, fd);
res = (wfd->events.lNetworkEvents & FD_WRITE) != 0;
#endif
+ } else {
+ GST_WARNING_OBJECT (set, "Couldn't find fd !");
}
g_mutex_unlock (set->lock);
g_mutex_lock (set->lock);
+ GST_DEBUG ("timeout :%" GST_TIME_FORMAT, GST_TIME_ARGS (timeout));
+
/* we cannot wait from multiple threads unless we are a timer */
if (G_UNLIKELY (set->waiting > 0 && !set->timer))
goto already_waiting;
tvptr = NULL;
}
+ GST_DEBUG ("Calling select");
res = select (max_fd + 1, &readfds, &writefds, &errorfds, tvptr);
+ GST_DEBUG ("After select, res:%d", res);
} else {
#ifdef HAVE_PSELECT
struct timespec ts;
tsptr = NULL;
}
+ GST_DEBUG ("Calling pselect");
res =
pselect (max_fd + 1, &readfds, &writefds, &errorfds, tsptr, NULL);
+ GST_DEBUG ("After pselect, res:%d", res);
#endif
}
{
g_return_val_if_fail (set != NULL, FALSE);
+ GST_LOG_OBJECT (set, "controllable : %d", controllable);
+
g_mutex_lock (set->lock);
#ifndef G_OS_WIN32
#ifndef G_OS_WIN32
no_socket_pair:
{
+ GST_WARNING_OBJECT (set, "Can't create socket pair !");
g_mutex_unlock (set->lock);
return FALSE;
}