poll: Add _cogl_poll_renderer_modify_fd

_cogl_poll_rendererer_modify_fd can be used internally to modify the
event mask on an FD to be polled. This will be used in the Wayland
backend to start blocking on write whenever flushing the display fills
the socket's buffer. Modifying the FD's events causes the poll age to
increase.

Reviewed-by: Robert Bragg <robert@linux.intel.com>

(cherry picked from commit 8bc0df53ee508687b87e547c1cbac5e8d7d5fc80)
This commit is contained in:
Neil Roberts 2013-06-28 12:15:26 +01:00
parent 41b97b885a
commit 651a2775b5
2 changed files with 24 additions and 0 deletions

View File

@ -43,6 +43,11 @@ _cogl_poll_renderer_add_fd (CoglRenderer *renderer,
CoglPollDispatchCallback dispatch,
void *user_data);
void
_cogl_poll_renderer_modify_fd (CoglRenderer *renderer,
int fd,
CoglPollFDEvent events);
typedef struct _CoglPollSource CoglPollSource;
CoglPollSource *

View File

@ -151,6 +151,25 @@ _cogl_poll_renderer_remove_fd (CoglRenderer *renderer, int fd)
}
}
void
_cogl_poll_renderer_modify_fd (CoglRenderer *renderer,
int fd,
CoglPollFDEvent events)
{
int fd_index = find_pollfd (renderer, fd);
if (fd_index == -1)
g_warn_if_reached ();
else
{
CoglPollFD *pollfd =
&g_array_index (renderer->poll_sources, CoglPollFD, fd_index);
pollfd->events = events;
renderer->poll_fds_age++;
}
}
void
_cogl_poll_renderer_add_fd (CoglRenderer *renderer,
int fd,