diff options
author | Neil Roberts <neil@linux.intel.com> | 2013-06-28 12:15:26 +0100 |
---|---|---|
committer | Neil Roberts <neil@linux.intel.com> | 2013-07-01 13:34:54 +0100 |
commit | 8bc0df53ee508687b87e547c1cbac5e8d7d5fc80 (patch) | |
tree | 13c0525b872d499e7fb8dca453b53e1d5e20a275 | |
parent | 02f7fa538c9d2b383fa0f601177140b571ecf315 (diff) | |
download | cogl-8bc0df53ee508687b87e547c1cbac5e8d7d5fc80.tar.gz |
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>
-rw-r--r-- | cogl/cogl-poll-private.h | 5 | ||||
-rw-r--r-- | cogl/cogl-poll.c | 19 |
2 files changed, 24 insertions, 0 deletions
diff --git a/cogl/cogl-poll-private.h b/cogl/cogl-poll-private.h index 3dfaa2b7..2a24128b 100644 --- a/cogl/cogl-poll-private.h +++ b/cogl/cogl-poll-private.h @@ -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 * diff --git a/cogl/cogl-poll.c b/cogl/cogl-poll.c index 10d15606..cb62327a 100644 --- a/cogl/cogl-poll.c +++ b/cogl/cogl-poll.c @@ -152,6 +152,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, CoglPollFDEvent events, |