diff options
author | marha <marha@users.sourceforge.net> | 2013-11-04 12:08:23 +0100 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2013-11-04 12:08:23 +0100 |
commit | 31fd4c5654595a4763e492e4ec26f66ca3a8a405 (patch) | |
tree | 8d6b249c93725e838676e26af171a167f6f20903 /xorg-server/os | |
parent | e4ef724e06621be9325fc41ed886fd404467fdc0 (diff) | |
download | vcxsrv-31fd4c5654595a4763e492e4ec26f66ca3a8a405.tar.gz vcxsrv-31fd4c5654595a4763e492e4ec26f66ca3a8a405.tar.bz2 vcxsrv-31fd4c5654595a4763e492e4ec26f66ca3a8a405.zip |
libxtrans fontconfig mesa xserver pixman xkbcomp git update 4 nov 2013
xserver commit 33c85beed521c9db140cadd8c5aa9992398ee1fe
xkbcomp commit e3e6e938535532bfad175c1635256ab7fb3ac943
pixman commit 8cbc7da4e525c96a8e089e4c1baee75dc8315218
libxtrans commit 1fb0fd555a16dd8fce4abc6d3fd22b315f46762a
fontconfig commit 767108aa1327cf0156dfc6f024dbc8fb783ae067
mesa commit 2f896627175384fd5943f21804700a155ba4e8a0
Diffstat (limited to 'xorg-server/os')
-rw-r--r-- | xorg-server/os/backtrace.c | 5 | ||||
-rw-r--r-- | xorg-server/os/connection.c | 2 | ||||
-rw-r--r-- | xorg-server/os/io.c | 29 | ||||
-rw-r--r-- | xorg-server/os/utils.c | 27 | ||||
-rw-r--r-- | xorg-server/os/xstrans.c | 2 |
5 files changed, 62 insertions, 3 deletions
diff --git a/xorg-server/os/backtrace.c b/xorg-server/os/backtrace.c index 426f9b15b..3d1195b86 100644 --- a/xorg-server/os/backtrace.c +++ b/xorg-server/os/backtrace.c @@ -114,14 +114,15 @@ xorg_backtrace(void) void xorg_backtrace(void) { - void *array[64]; + const int BT_SIZE = 64; + void *array[BT_SIZE]; const char *mod; int size, i; Dl_info info; ErrorFSigSafe("\n"); ErrorFSigSafe("Backtrace:\n"); - size = backtrace(array, 64); + size = backtrace(array, BT_SIZE); for (i = 0; i < size; i++) { int rc = dladdr(array[i], &info); diff --git a/xorg-server/os/connection.c b/xorg-server/os/connection.c index 6cd8bcf43..162e1d93e 100644 --- a/xorg-server/os/connection.c +++ b/xorg-server/os/connection.c @@ -923,7 +923,7 @@ ErrorConnMax(XtransConnInfo trans_conn) iov[0].iov_len = sz_xConnSetupPrefix; iov[0].iov_base = (char *) &csp; iov[1].iov_len = csp.lengthReason; - iov[1].iov_base = NOROOM; + iov[1].iov_base = (void *) NOROOM; iov[2].iov_len = (4 - (csp.lengthReason & 3)) & 3; iov[2].iov_base = pad; (void) _XSERVTransWritev(trans_conn, iov, 3); diff --git a/xorg-server/os/io.c b/xorg-server/os/io.c index 380036664..a20faa56f 100644 --- a/xorg-server/os/io.c +++ b/xorg-server/os/io.c @@ -259,6 +259,12 @@ ReadRequestFromClient(ClientPtr client) oc->input = oci; } + /* Discard any unused file descriptors */ + while (client->req_fds > 0) { + int req_fd = ReadFdFromClient(client); + if (req_fd >= 0) + close(req_fd); + } /* advance to start of next request */ oci->bufptr += oci->lenLastReq; @@ -485,6 +491,29 @@ ReadRequestFromClient(ClientPtr client) return needed; } +int +ReadFdFromClient(ClientPtr client) +{ + int fd = -1; + + if (client->req_fds > 0) { + OsCommPtr oc = (OsCommPtr) client->osPrivate; + + --client->req_fds; + fd = _XSERVTransRecvFd(oc->trans_conn); + } else + LogMessage(X_ERROR, "Request asks for FD without setting req_fds\n"); + return fd; +} + +int +WriteFdToClient(ClientPtr client, int fd, Bool do_close) +{ + OsCommPtr oc = (OsCommPtr) client->osPrivate; + + return _XSERVTransSendFd(oc->trans_conn, fd, do_close); +} + /***************************************************************** * InsertFakeRequest * Splice a consed up (possibly partial) request in as the next request. diff --git a/xorg-server/os/utils.c b/xorg-server/os/utils.c index 97c3125e6..995f62a37 100644 --- a/xorg-server/os/utils.c +++ b/xorg-server/os/utils.c @@ -430,6 +430,11 @@ GetTimeInMillis(void) { return GetTickCount(); } +CARD64 +GetTimeInMicros(void) +{ + return (CARD64) GetTickCount() * 1000; +} #else CARD32 GetTimeInMillis(void) @@ -460,6 +465,28 @@ GetTimeInMillis(void) X_GETTIMEOFDAY(&tv); return (tv.tv_sec * 1000) + (tv.tv_usec / 1000); } + +CARD64 +GetTimeInMicros(void) +{ + struct timeval tv; +#ifdef MONOTONIC_CLOCK + struct timespec tp; + static clockid_t clockid; + + if (!clockid) { + if (clock_gettime(CLOCK_MONOTONIC, &tp) == 0) + clockid = CLOCK_MONOTONIC; + else + clockid = ~0L; + } + if (clock_gettime(CLOCK_MONOTONIC, &tp) == 0) + return (CARD64) tp.tv_sec * (CARD64)1000000 + tp.tv_nsec / 1000; +#endif + + X_GETTIMEOFDAY(&tv); + return (CARD64) tv.tv_sec * (CARD64)1000000000 + (CARD64) tv.tv_usec * 1000; +} #endif void diff --git a/xorg-server/os/xstrans.c b/xorg-server/os/xstrans.c index 6348a6511..2bc79e7ae 100644 --- a/xorg-server/os/xstrans.c +++ b/xorg-server/os/xstrans.c @@ -5,9 +5,11 @@ #include <X11/Xfuncproto.h> /* ErrorF is used by xtrans */ +#ifndef HAVE_DIX_CONFIG_H extern _X_EXPORT void ErrorF(const char *f, ...) _X_ATTRIBUTE_PRINTF(1, 2); +#endif #define TRANS_REOPEN #define TRANS_SERVER |