diff options
author | marha <marha@users.sourceforge.net> | 2013-12-22 13:12:15 +0100 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2013-12-22 13:16:58 +0100 |
commit | 1d03b6f684ab1ea6772f00058605a9ebb2910628 (patch) | |
tree | 8b393bd59900eba6aa9010cab9e714922cac2536 /xorg-server/os/utils.c | |
parent | 5567cf1befbda64f2dc6fae1d337567cd984b46e (diff) | |
parent | c81020559f329a516191927222b3698ba7370aca (diff) | |
download | vcxsrv-1d03b6f684ab1ea6772f00058605a9ebb2910628.tar.gz vcxsrv-1d03b6f684ab1ea6772f00058605a9ebb2910628.tar.bz2 vcxsrv-1d03b6f684ab1ea6772f00058605a9ebb2910628.zip |
Merge remote-tracking branch 'origin/released'
* origin/released:
libxtrans fontconfig glproto libX11 libxcb xcbproto mesa xserver pixman xkeyboard-config git update 22 Dec 2013
Conflicts:
mesalib/include/GL/glext.h
mesalib/src/mesa/drivers/dri/common/dri_util.c
mesalib/src/mesa/drivers/dri/swrast/swrast.c
xorg-server/damageext/damageext.c
xorg-server/dix/dispatch.c
xorg-server/glx/glxdriswrast.c
xorg-server/glx/indirect_dispatch.c
xorg-server/glx/indirect_dispatch_swap.c
xorg-server/glx/indirect_program.c
xorg-server/glx/render2.c
xorg-server/glx/render2swap.c
xorg-server/hw/xwin/glx/gen_gl_wrappers.py
xorg-server/hw/xwin/glx/glthunk.c
xorg-server/hw/xwin/glx/indirect.c
xorg-server/include/os.h
xorg-server/present/present_request.c
Diffstat (limited to 'xorg-server/os/utils.c')
-rw-r--r-- | xorg-server/os/utils.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/xorg-server/os/utils.c b/xorg-server/os/utils.c index c40a938f7..ff3b7e40a 100644 --- a/xorg-server/os/utils.c +++ b/xorg-server/os/utils.c @@ -2129,3 +2129,27 @@ FormatUInt64Hex(uint64_t num, char *string) string[len] = '\0'; } + +/* Move a file descriptor out of the way of our select mask; this + * is useful for file descriptors which will never appear in the + * select mask to avoid reducing the number of clients that can + * connect to the server + */ +int +os_move_fd(int fd) +{ + int newfd; + +#ifdef F_DUPFD_CLOEXEC + newfd = fcntl(fd, F_DUPFD_CLOEXEC, MAXCLIENTS); +#else + newfd = fcntl(fd, F_DUPFD, MAXCLIENTS); +#endif + if (newfd < 0) + return fd; +#ifndef F_DUPFD_CLOEXEC + fcntl(newfd, F_SETFD, FD_CLOEXEC); +#endif + close(fd); + return newfd; +} |