On Mon, 14 Dec 2009 15:19:47 -0500, Adam Jackson <[email protected]> wrote:
> Use the wrapper functions consistently instead of hardcoding unix > knowledge everywhere directly. One general complaint -- #ifndef ... #else ... #endif should probably be flipped around to avoid the double-negative sense in the #else clause. Otherwise, it looks good to me. Reviewed-by: Keith Packard <[email protected]> > > Signed-off-by: Adam Jackson <[email protected]> > --- > os/WaitFor.c | 3 +-- > os/connection.c | 44 ++++++++++++++++++++------------------------ > os/io.c | 2 +- > os/osdep.h | 6 +----- > 4 files changed, 23 insertions(+), 32 deletions(-) > > diff --git a/os/WaitFor.c b/os/WaitFor.c > index dfe85e5..7d10183 100644 > --- a/os/WaitFor.c > +++ b/os/WaitFor.c > @@ -338,8 +338,7 @@ WaitForSomething(int *pClientsReady) > int client_priority, client_index; > > curclient = mffs (clientsReadable.fds_bits[i]) - 1; > - client_index = /* raphael: modified */ > - ConnectionTranslation[curclient + (i * (sizeof(fd_mask) > * 8))]; > + client_index = GetConnectionTranslation(curclient); > #else > int highest_priority = 0; > fd_set savedClientsReadable; > diff --git a/os/connection.c b/os/connection.c > index 3ff93bb..bf16f6a 100644 > --- a/os/connection.c > +++ b/os/connection.c > @@ -159,7 +159,7 @@ static fd_set SavedClientsWithInput; > int GrabInProgress = 0; > > #if !defined(WIN32) > -int *ConnectionTranslation = NULL; > +static int *ConnectionTranslation = NULL; > #else > /* > * On NT fds are not between 0 and MAXSOCKS, they are unrelated, and there is > @@ -179,15 +179,24 @@ struct _ct_node { > int value; > }; > > -struct _ct_node *ct_head[256]; > +static struct _ct_node *ct_head[256]; > +#endif > > void InitConnectionTranslation(void) > { > +#ifndef WIN32 > + if (!ConnectionTranslation) > + ConnectionTranslation = xnfalloc(sizeof(int)*(lastfdesc + 1)); > +#else > bzero(ct_head, sizeof(ct_head)); > +#endif > } > > int GetConnectionTranslation(int conn) > { > +#ifndef WIN32 > + return ConnectionTranslation[conn]; > +#else > struct _ct_node *node = ct_head[conn & 0xff]; > while (node != NULL) > { > @@ -196,10 +205,14 @@ int GetConnectionTranslation(int conn) > node = node->next; > } > return 0; > +#endif > } > > void SetConnectionTranslation(int conn, int client) > { > +#ifndef WIN32 > + ConnectionTranslation[conn] = client; > +#else > struct _ct_node **node = ct_head + (conn & 0xff); > if (client == 0) /* remove entry */ > { > @@ -232,10 +245,14 @@ void SetConnectionTranslation(int conn, int client) > (*node)->value = client; > return; > } > +#endif > } > > void ClearConnectionTranslation(void) > { > +#ifndef WIN32 > + for (i=0; i<MaxClients; i++) ConnectionTranslation[i] = 0; > +#else > unsigned i; > for (i = 0; i < 256; i++) > { > @@ -247,8 +264,8 @@ void ClearConnectionTranslation(void) > xfree(temp); > } > } > -} > #endif > +} > > static XtransConnInfo *ListenTransConns = NULL; > static int *ListenTransFds = NULL; > @@ -314,12 +331,7 @@ InitConnectionLimits(void) > ErrorF("InitConnectionLimits: MaxClients = %d\n", MaxClients); > #endif > > -#if !defined(WIN32) > - if (!ConnectionTranslation) > - ConnectionTranslation = (int *)xnfalloc(sizeof(int)*(lastfdesc + 1)); > -#else > InitConnectionTranslation(); > -#endif > } > > /* > @@ -377,11 +389,7 @@ CreateWellKnownSockets(void) > FD_ZERO(&LastSelectMask); > FD_ZERO(&ClientsWithInput); > > -#if !defined(WIN32) > - for (i=0; i<MaxClients; i++) ConnectionTranslation[i] = 0; > -#else > ClearConnectionTranslation(); > -#endif > > FD_ZERO (&WellKnownConnections); > > @@ -751,11 +759,7 @@ AllocNewConnection (XtransConnInfo trans_conn, int fd, > CARD32 conn_time) > xfree (oc); > return NullClient; > } > -#if !defined(WIN32) > - ConnectionTranslation[fd] = client->index; > -#else > SetConnectionTranslation(fd, client->index); > -#endif > if (GrabInProgress) > { > FD_SET(fd, &SavedAllClients); > @@ -845,11 +849,7 @@ EstablishNewConnections(ClientPtr clientUnused, pointer > closure) > if (newconn < lastfdesc) > { > int clientid; > -#if !defined(WIN32) > - clientid = ConnectionTranslation[newconn]; > -#else > clientid = GetConnectionTranslation(newconn); > -#endif > if(clientid && (client = clients[clientid])) > CloseDownClient(client); > } > @@ -938,11 +938,7 @@ CloseDownFileDescriptor(OsCommPtr oc) > _XSERVTransDisconnect(oc->trans_conn); > _XSERVTransClose(oc->trans_conn); > } > -#ifndef WIN32 > - ConnectionTranslation[connection] = 0; > -#else > SetConnectionTranslation(connection, 0); > -#endif > FD_CLR(connection, &AllSockets); > FD_CLR(connection, &AllClients); > FD_CLR(connection, &ClientsWithInput); > diff --git a/os/io.c b/os/io.c > index 64b64ae..2e8d1a0 100644 > --- a/os/io.c > +++ b/os/io.c > @@ -633,7 +633,7 @@ FlushAllOutput(void) > { > index = ffs(mask) - 1; > mask &= ~lowbit(mask); > - if ((index = ConnectionTranslation[(base * (sizeof(fd_mask)*8)) + > index]) == 0) > + if ((index = GetConnectionTranslation(index)) == 0) > continue; > client = clients[index]; > if (client->clientGone) > diff --git a/os/osdep.h b/os/osdep.h > index 3d75bba..4ebe0e9 100644 > --- a/os/osdep.h > +++ b/os/osdep.h > @@ -195,13 +195,9 @@ extern fd_set ClientsWriteBlocked; > extern fd_set OutputPending; > extern fd_set IgnoredClientsWithInput; > > -#ifndef WIN32 > -extern int *ConnectionTranslation; > -#else > extern int GetConnectionTranslation(int conn); > extern void SetConnectionTranslation(int conn, int client); > -extern void ClearConnectionTranslation(); > -#endif > +extern void ClearConnectionTranslation(void); > > extern Bool NewOutputPending; > extern Bool AnyClientsWriteBlocked; > -- > 1.6.5.2 > > _______________________________________________ > xorg-devel mailing list > [email protected] > http://lists.x.org/mailman/listinfo/xorg-devel -- [email protected]
pgpgObh30SiIT.pgp
Description: PGP signature
_______________________________________________ xorg-devel mailing list [email protected] http://lists.x.org/mailman/listinfo/xorg-devel
