Merge branch 'master' of git+ssh://git.freedesktop.org/git/xorg/xserver
Conflicts: GL/glx/indirect_dispatch_swap.c GL/glx/swap_interval.c
This commit is contained in:
		
						commit
						8dd5771a1b
					
				| 
						 | 
				
			
			@ -25,6 +25,10 @@
 | 
			
		|||
 * SOFTWARE.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifdef HAVE_DIX_CONFIG_H
 | 
			
		||||
#include <dix-config.h>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#include <X11/Xmd.h>
 | 
			
		||||
#include <GL/gl.h>
 | 
			
		||||
#include <GL/glxproto.h>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -35,6 +35,7 @@
 | 
			
		|||
#endif
 | 
			
		||||
 | 
			
		||||
#include "glxserver.h"
 | 
			
		||||
#include "glxbyteorder.h"
 | 
			
		||||
#include "glxext.h"
 | 
			
		||||
#include "singlesize.h"
 | 
			
		||||
#include "unpack.h"
 | 
			
		||||
| 
						 | 
				
			
			@ -46,20 +47,6 @@
 | 
			
		|||
#include "dispatch.h"
 | 
			
		||||
#include "glapioffsets.h"
 | 
			
		||||
 | 
			
		||||
#if defined(__linux__) || defined (__GLIBC__) || defined (__GNU__)
 | 
			
		||||
#include <byteswap.h>
 | 
			
		||||
#elif defined(__OpenBSD__)
 | 
			
		||||
#include <sys/endian.h>
 | 
			
		||||
#define bswap_16 __swap16
 | 
			
		||||
#define bswap_32 __swap32
 | 
			
		||||
#define bswap_64 __swap64
 | 
			
		||||
#else
 | 
			
		||||
#include <sys/endian.h>
 | 
			
		||||
#define bswap_16 bswap16
 | 
			
		||||
#define bswap_32 bswap32
 | 
			
		||||
#define bswap_64 bswap64
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
static int DoGetProgramString(struct __GLXclientStateRec *cl, GLbyte *pc,
 | 
			
		||||
    unsigned get_programiv_offset, unsigned get_program_string_offset,
 | 
			
		||||
    Bool do_swap);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -29,6 +29,7 @@
 | 
			
		|||
#endif
 | 
			
		||||
 | 
			
		||||
#include "glxserver.h"
 | 
			
		||||
#include "glxbyteorder.h"
 | 
			
		||||
#include "glxext.h"
 | 
			
		||||
#include "singlesize.h"
 | 
			
		||||
#include "unpack.h"
 | 
			
		||||
| 
						 | 
				
			
			@ -39,20 +40,6 @@
 | 
			
		|||
#include "glthread.h"
 | 
			
		||||
#include "dispatch.h"
 | 
			
		||||
 | 
			
		||||
#if defined(__linux__) || defined (__GLIBC__) || defined (__GNU__)
 | 
			
		||||
#include <byteswap.h>
 | 
			
		||||
#elif defined(__OpenBSD__)
 | 
			
		||||
#include <sys/endian.h>
 | 
			
		||||
#define bswap_16 __swap16
 | 
			
		||||
#define bswap_32 __swap32
 | 
			
		||||
#define bswap_64 __swap64
 | 
			
		||||
#else
 | 
			
		||||
#include <sys/endian.h>
 | 
			
		||||
#define bswap_16 bswap16
 | 
			
		||||
#define bswap_32 bswap32
 | 
			
		||||
#define bswap_64 bswap64
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
int __glXDisp_GetCompressedTexImageARB(struct __GLXclientStateRec *cl, GLbyte *pc)
 | 
			
		||||
{
 | 
			
		||||
    xGLXSingleReq * const req = (xGLXSingleReq *) pc;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,29 +23,21 @@
 | 
			
		|||
 * SOFTWARE.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifdef HAVE_DIX_CONFIG_H
 | 
			
		||||
#include <dix-config.h>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#include <string.h>
 | 
			
		||||
 | 
			
		||||
#include <X11/Xmd.h>
 | 
			
		||||
#include <GL/gl.h>
 | 
			
		||||
#include <GL/glxproto.h>
 | 
			
		||||
#if defined(__linux__) || defined (__GLIBC__) || defined(__GNU__)
 | 
			
		||||
#include <byteswap.h>
 | 
			
		||||
#elif defined(__OpenBSD__)
 | 
			
		||||
#include <sys/endian.h>
 | 
			
		||||
#define bswap_16 __swap16
 | 
			
		||||
#define bswap_32 __swap32
 | 
			
		||||
#define bswap_64 __swap64
 | 
			
		||||
#else
 | 
			
		||||
#include <sys/endian.h>
 | 
			
		||||
#define bswap_16 bswap16
 | 
			
		||||
#define bswap_32 bswap32
 | 
			
		||||
#define bswap_64 bswap64
 | 
			
		||||
#endif
 | 
			
		||||
#include <inttypes.h>
 | 
			
		||||
#include "indirect_size.h"
 | 
			
		||||
#include "indirect_size_get.h"
 | 
			
		||||
#include "indirect_dispatch.h"
 | 
			
		||||
#include "glxserver.h"
 | 
			
		||||
#include "glxbyteorder.h"
 | 
			
		||||
#include "singlesize.h"
 | 
			
		||||
#include "glapitable.h"
 | 
			
		||||
#include "glapi.h"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -39,7 +39,6 @@
 | 
			
		|||
#include "glthread.h"
 | 
			
		||||
#include "dispatch.h"
 | 
			
		||||
#include "glapioffsets.h"
 | 
			
		||||
 | 
			
		||||
#include "glxbyteorder.h"
 | 
			
		||||
 | 
			
		||||
static int DoSwapInterval(__GLXclientState *cl, GLbyte *pc, int do_swap);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -78,6 +78,7 @@ typedef struct __GLXMESAdrawable __GLXMESAdrawable;
 | 
			
		|||
struct __GLXMESAscreen {
 | 
			
		||||
    __GLXscreen   base;
 | 
			
		||||
    int           index;
 | 
			
		||||
    int		  num_vis;
 | 
			
		||||
    XMesaVisual  *xm_vis;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -280,7 +281,7 @@ __glXMesaScreenDestroy(__GLXscreen *screen)
 | 
			
		|||
    __GLXMESAscreen *mesaScreen = (__GLXMESAscreen *) screen;
 | 
			
		||||
    int i;
 | 
			
		||||
 | 
			
		||||
    for (i = 0; i < screen->numVisuals; i++) {
 | 
			
		||||
    for (i = 0; i < mesaScreen->num_vis; i++) {
 | 
			
		||||
	if (mesaScreen->xm_vis[i])
 | 
			
		||||
	    XMesaDestroyVisual(mesaScreen->xm_vis[i]);
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			@ -389,6 +390,7 @@ static void init_screen_visuals(__GLXMESAscreen *screen)
 | 
			
		|||
 | 
			
		||||
    xfree(used);
 | 
			
		||||
 | 
			
		||||
    screen->num_vis = pScreen->numVisuals;
 | 
			
		||||
    screen->xm_vis = pXMesaVisual;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										58
									
								
								configure.ac
								
								
								
								
							
							
						
						
									
										58
									
								
								configure.ac
								
								
								
								
							| 
						 | 
				
			
			@ -99,6 +99,64 @@ fi
 | 
			
		|||
 | 
			
		||||
AC_TYPE_PID_T
 | 
			
		||||
 | 
			
		||||
# Checks for headers/macros for byte swapping
 | 
			
		||||
# Known variants:
 | 
			
		||||
#	<byteswap.h> bswap_16, bswap_32, bswap_64  (glibc)
 | 
			
		||||
#	<sys/endian.h> __swap16, __swap32, __swap64 (OpenBSD)
 | 
			
		||||
#	<sys/endian.h> bswap16, bswap32, bswap64 (other BSD's)
 | 
			
		||||
#	and a fallback to local macros if none of the above are found
 | 
			
		||||
 | 
			
		||||
# if <byteswap.h> is found, assume it's the correct version
 | 
			
		||||
AC_CHECK_HEADERS([byteswap.h])
 | 
			
		||||
 | 
			
		||||
# if <sys/endian.h> is found, have to check which version
 | 
			
		||||
AC_CHECK_HEADER([sys/endian.h], [HAVE_SYS_ENDIAN_H="yes"], [HAVE_SYS_ENDIAN_H="no"])
 | 
			
		||||
 | 
			
		||||
if test "x$HAVE_SYS_ENDIAN_H" = "xyes" ; then
 | 
			
		||||
	AC_MSG_CHECKING([for __swap16 variant of <sys/endian.h> byteswapping macros])
 | 
			
		||||
	AC_LINK_IFELSE([AC_LANG_PROGRAM([
 | 
			
		||||
#include <sys/endian.h>
 | 
			
		||||
 ], [
 | 
			
		||||
int a = 1, b;
 | 
			
		||||
b = __swap16(a);
 | 
			
		||||
 ])
 | 
			
		||||
], [SYS_ENDIAN__SWAP='yes'], [SYS_ENDIAN__SWAP='no'])
 | 
			
		||||
	AC_MSG_RESULT([$SYS_ENDIAN__SWAP])
 | 
			
		||||
 | 
			
		||||
	AC_MSG_CHECKING([for bswap_16 variant of <sys/endian.h> byteswapping macros])
 | 
			
		||||
	AC_LINK_IFELSE([AC_LANG_PROGRAM([
 | 
			
		||||
#include <sys/endian.h>
 | 
			
		||||
 ], [
 | 
			
		||||
int a = 1, b;
 | 
			
		||||
b = bswap_16(a);
 | 
			
		||||
 ])
 | 
			
		||||
], [SYS_ENDIAN_BSWAP='yes'], [SYS_ENDIAN_BSWAP='no'])
 | 
			
		||||
	AC_MSG_RESULT([$SYS_ENDIAN_BSWAP])
 | 
			
		||||
 | 
			
		||||
    	if test "$SYS_ENDIAN_BSWAP" = "yes" ; then
 | 
			
		||||
		USE_SYS_ENDIAN_H=yes
 | 
			
		||||
		BSWAP=bswap_
 | 
			
		||||
	else	
 | 
			
		||||
	    	if test "$SYS_ENDIAN__SWAP" = "yes" ; then
 | 
			
		||||
			USE_SYS_ENDIAN_H=yes
 | 
			
		||||
			BSWAP=__swap
 | 
			
		||||
		else
 | 
			
		||||
			USE_SYS_ENDIAN_H=no
 | 
			
		||||
		fi
 | 
			
		||||
	fi
 | 
			
		||||
 | 
			
		||||
	if test "$USE_SYS_ENDIAN_H" = "yes" ; then
 | 
			
		||||
	    AC_DEFINE([USE_SYS_ENDIAN_H], 1, 
 | 
			
		||||
		[Define to use byteswap macros from <sys/endian.h>])
 | 
			
		||||
	    AC_DEFINE_UNQUOTED([bswap_16], ${BSWAP}16, 
 | 
			
		||||
			[Define to 16-bit byteswap macro])
 | 
			
		||||
	    AC_DEFINE_UNQUOTED([bswap_32], ${BSWAP}32, 
 | 
			
		||||
			[Define to 32-bit byteswap macro])
 | 
			
		||||
	    AC_DEFINE_UNQUOTED([bswap_64], ${BSWAP}64, 
 | 
			
		||||
			[Define to 64-bit byteswap macro])
 | 
			
		||||
	fi
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
dnl Checks for library functions.
 | 
			
		||||
AC_FUNC_VPRINTF
 | 
			
		||||
AC_CHECK_FUNCS([geteuid getuid link memmove memset mkstemp strchr strrchr \
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -113,6 +113,10 @@ DLFindSymbol(const char *name)
 | 
			
		|||
    DLModuleList *l;
 | 
			
		||||
    void *p;
 | 
			
		||||
 | 
			
		||||
    p = dlsym(RTLD_DEFAULT, name);
 | 
			
		||||
    if (p != NULL)
 | 
			
		||||
	return p;
 | 
			
		||||
 | 
			
		||||
    for (l = dlModuleList; l != NULL; l = l->next) {
 | 
			
		||||
        p = DLFindSymbolLocal(l->module, name);
 | 
			
		||||
	if (p)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2129,7 +2129,7 @@ static void x86emuOp2_bsf(u8 X86EMU_UNUSED(op2))
 | 
			
		|||
    uint srcoffset;
 | 
			
		||||
 | 
			
		||||
    START_OF_INSTR();
 | 
			
		||||
    DECODE_PRINTF("BSF\n");
 | 
			
		||||
    DECODE_PRINTF("BSF\t");
 | 
			
		||||
    FETCH_DECODE_MODRM(mod, rh, rl);
 | 
			
		||||
    switch(mod) {
 | 
			
		||||
    case 0:
 | 
			
		||||
| 
						 | 
				
			
			@ -2209,25 +2209,25 @@ static void x86emuOp2_bsf(u8 X86EMU_UNUSED(op2))
 | 
			
		|||
	break;
 | 
			
		||||
    case 3:				/* register to register */
 | 
			
		||||
	if (M.x86.mode & SYSMODE_PREFIX_DATA) {
 | 
			
		||||
	    u32 *srcreg, *dstreg;
 | 
			
		||||
	    u32 srcval, *dstreg;
 | 
			
		||||
 | 
			
		||||
	    srcreg = DECODE_RM_LONG_REGISTER(rl);
 | 
			
		||||
	    srcval = *DECODE_RM_LONG_REGISTER(rl);
 | 
			
		||||
	    DECODE_PRINTF(",");
 | 
			
		||||
	    dstreg = DECODE_RM_LONG_REGISTER(rh);
 | 
			
		||||
	    TRACE_AND_STEP();
 | 
			
		||||
	    CONDITIONAL_SET_FLAG(*srcreg == 0, F_ZF);
 | 
			
		||||
	    CONDITIONAL_SET_FLAG(srcval == 0, F_ZF);
 | 
			
		||||
	    for(*dstreg = 0; *dstreg < 32; (*dstreg)++)
 | 
			
		||||
		if ((*srcreg >> *dstreg) & 1) break;
 | 
			
		||||
		if ((srcval >> *dstreg) & 1) break;
 | 
			
		||||
	} else {
 | 
			
		||||
	    u16 *srcreg, *dstreg;
 | 
			
		||||
	    u16 srcval, *dstreg;
 | 
			
		||||
 | 
			
		||||
	    srcreg = DECODE_RM_WORD_REGISTER(rl);
 | 
			
		||||
	    srcval = *DECODE_RM_WORD_REGISTER(rl);
 | 
			
		||||
	    DECODE_PRINTF(",");
 | 
			
		||||
	    dstreg = DECODE_RM_WORD_REGISTER(rh);
 | 
			
		||||
	    TRACE_AND_STEP();
 | 
			
		||||
	    CONDITIONAL_SET_FLAG(*srcreg == 0, F_ZF);
 | 
			
		||||
	    CONDITIONAL_SET_FLAG(srcval == 0, F_ZF);
 | 
			
		||||
	    for(*dstreg = 0; *dstreg < 16; (*dstreg)++)
 | 
			
		||||
		if ((*srcreg >> *dstreg) & 1) break;
 | 
			
		||||
		if ((srcval >> *dstreg) & 1) break;
 | 
			
		||||
	}
 | 
			
		||||
	break;
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			@ -2245,7 +2245,7 @@ static void x86emuOp2_bsr(u8 X86EMU_UNUSED(op2))
 | 
			
		|||
    uint srcoffset;
 | 
			
		||||
 | 
			
		||||
    START_OF_INSTR();
 | 
			
		||||
    DECODE_PRINTF("BSF\n");
 | 
			
		||||
    DECODE_PRINTF("BSR\t");
 | 
			
		||||
    FETCH_DECODE_MODRM(mod, rh, rl);
 | 
			
		||||
    switch(mod) {
 | 
			
		||||
    case 0:
 | 
			
		||||
| 
						 | 
				
			
			@ -2325,25 +2325,25 @@ static void x86emuOp2_bsr(u8 X86EMU_UNUSED(op2))
 | 
			
		|||
	break;
 | 
			
		||||
    case 3:				/* register to register */
 | 
			
		||||
	if (M.x86.mode & SYSMODE_PREFIX_DATA) {
 | 
			
		||||
	    u32 *srcreg, *dstreg;
 | 
			
		||||
	    u32 srcval, *dstreg;
 | 
			
		||||
 | 
			
		||||
	    srcreg = DECODE_RM_LONG_REGISTER(rl);
 | 
			
		||||
	    srcval = *DECODE_RM_LONG_REGISTER(rl);
 | 
			
		||||
	    DECODE_PRINTF(",");
 | 
			
		||||
	    dstreg = DECODE_RM_LONG_REGISTER(rh);
 | 
			
		||||
	    TRACE_AND_STEP();
 | 
			
		||||
	    CONDITIONAL_SET_FLAG(*srcreg == 0, F_ZF);
 | 
			
		||||
	    CONDITIONAL_SET_FLAG(srcval == 0, F_ZF);
 | 
			
		||||
	    for(*dstreg = 31; *dstreg > 0; (*dstreg)--)
 | 
			
		||||
		if ((*srcreg >> *dstreg) & 1) break;
 | 
			
		||||
		if ((srcval >> *dstreg) & 1) break;
 | 
			
		||||
	} else {
 | 
			
		||||
	    u16 *srcreg, *dstreg;
 | 
			
		||||
	    u16 srcval, *dstreg;
 | 
			
		||||
 | 
			
		||||
	    srcreg = DECODE_RM_WORD_REGISTER(rl);
 | 
			
		||||
	    srcval = *DECODE_RM_WORD_REGISTER(rl);
 | 
			
		||||
	    DECODE_PRINTF(",");
 | 
			
		||||
	    dstreg = DECODE_RM_WORD_REGISTER(rh);
 | 
			
		||||
	    TRACE_AND_STEP();
 | 
			
		||||
	    CONDITIONAL_SET_FLAG(*srcreg == 0, F_ZF);
 | 
			
		||||
	    CONDITIONAL_SET_FLAG(srcval == 0, F_ZF);
 | 
			
		||||
	    for(*dstreg = 15; *dstreg > 0; (*dstreg)--)
 | 
			
		||||
		if ((*srcreg >> *dstreg) & 1) break;
 | 
			
		||||
		if ((srcval >> *dstreg) & 1) break;
 | 
			
		||||
	}
 | 
			
		||||
	break;
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -93,6 +93,9 @@
 | 
			
		|||
/* Define to 1 if you have the <asm/mtrr.h> header file. */
 | 
			
		||||
#undef HAVE_ASM_MTRR_H
 | 
			
		||||
 | 
			
		||||
/* Define to 1 if you have the <byteswap.h> header file. */
 | 
			
		||||
#undef HAVE_BYTESWAP_H
 | 
			
		||||
 | 
			
		||||
/* Define to 1 if you have the <dbm.h> header file. */
 | 
			
		||||
#undef HAVE_DBM_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -311,6 +314,9 @@
 | 
			
		|||
/* Use rgb.txt directly */
 | 
			
		||||
#undef USE_RGB_TXT
 | 
			
		||||
 | 
			
		||||
/* Define to use byteswap macros from <sys/endian.h> */
 | 
			
		||||
#undef USE_SYS_ENDIAN_H
 | 
			
		||||
 | 
			
		||||
/* unaligned word accesses behave as expected */
 | 
			
		||||
#undef WORKING_UNALIGNED_INT
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -469,4 +475,13 @@
 | 
			
		|||
/* Path to XErrorDB file */
 | 
			
		||||
#undef XERRORDB_PATH
 | 
			
		||||
 | 
			
		||||
/* Define to 16-bit byteswap macro */
 | 
			
		||||
#undef bswap_16
 | 
			
		||||
 | 
			
		||||
/* Define to 32-bit byteswap macro */
 | 
			
		||||
#undef bswap_32
 | 
			
		||||
 | 
			
		||||
/* Define to 64-bit byteswap macro */
 | 
			
		||||
#undef bswap_64
 | 
			
		||||
 | 
			
		||||
#endif /* _DIX_CONFIG_H_ */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										13
									
								
								mi/mieq.c
								
								
								
								
							
							
						
						
									
										13
									
								
								mi/mieq.c
								
								
								
								
							| 
						 | 
				
			
			@ -52,6 +52,12 @@ in this Software without prior written authorization from The Open Group.
 | 
			
		|||
# include   "extinit.h"
 | 
			
		||||
# include   "exglobals.h"
 | 
			
		||||
 | 
			
		||||
#ifdef DPMSExtension
 | 
			
		||||
# include "dpmsproc.h"
 | 
			
		||||
# define DPMS_SERVER
 | 
			
		||||
# include <X11/extensions/dpms.h>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#define QUEUE_SIZE  256
 | 
			
		||||
 | 
			
		||||
typedef struct _Event {
 | 
			
		||||
| 
						 | 
				
			
			@ -183,6 +189,13 @@ mieqProcessInputEvents()
 | 
			
		|||
    while (miEventQueue.head != miEventQueue.tail) {
 | 
			
		||||
        if (screenIsSaved == SCREEN_SAVER_ON)
 | 
			
		||||
            SaveScreens (SCREEN_SAVER_OFF, ScreenSaverReset);
 | 
			
		||||
#ifdef DPMSExtension
 | 
			
		||||
        else if (DPMSPowerLevel != DPMSModeOn)
 | 
			
		||||
            SetScreenSaverTimer();
 | 
			
		||||
 | 
			
		||||
        if (DPMSPowerLevel != DPMSModeOn)
 | 
			
		||||
            DPMSSet(DPMSModeOn);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
        e = &miEventQueue.events[miEventQueue.head];
 | 
			
		||||
        /* Assumption - screen switching can only occur on motion events. */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -337,10 +337,7 @@ WaitForSomething(int *pClientsReady)
 | 
			
		|||
	    if (XFD_ANYSET(&tmp_set))
 | 
			
		||||
		QueueWorkProc(EstablishNewConnections, NULL,
 | 
			
		||||
			      (pointer)&LastSelectMask);
 | 
			
		||||
#ifdef DPMSExtension
 | 
			
		||||
	    if (XFD_ANYSET (&devicesReadable) && (DPMSPowerLevel != DPMSModeOn))
 | 
			
		||||
		DPMSSet(DPMSModeOn);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	    if (XFD_ANYSET (&devicesReadable) || XFD_ANYSET (&clientsReadable))
 | 
			
		||||
		break;
 | 
			
		||||
#ifdef WIN32
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue