MinGW defines SIG_BLOCK, but doesn't have signal masks, so rather than checking for SIG_BLOCK, add a configure check for sigprocmask.
Signed-off-by: Jon Turney <jon.tur...@dronecode.org.uk> --- configure.ac | 2 +- include/dix-config.h.in | 3 +++ os/inputthread.c | 4 ++++ os/utils.c | 8 ++++---- 4 files changed, 12 insertions(+), 5 deletions(-) diff --git a/configure.ac b/configure.ac index 1614584..b0b3250 100644 --- a/configure.ac +++ b/configure.ac @@ -219,7 +219,7 @@ dnl Checks for library functions. AC_CHECK_FUNCS([backtrace ffs geteuid getuid issetugid getresuid \ getdtablesize getifaddrs getpeereid getpeerucred getprogname getzoneid \ mmap posix_fallocate seteuid shmctl64 strncasecmp vasprintf vsnprintf \ - walkcontext setitimer poll epoll_create1]) + walkcontext setitimer poll epoll_create1 sigprocmask]) AC_CONFIG_LIBOBJ_DIR([os]) AC_REPLACE_FUNCS([reallocarray strcasecmp strcasestr strlcat strlcpy strndup]) AM_CONDITIONAL(POLL, [test "x$ac_cv_func_poll" = "xyes"]) diff --git a/include/dix-config.h.in b/include/dix-config.h.in index d49af92..3573122 100644 --- a/include/dix-config.h.in +++ b/include/dix-config.h.in @@ -533,4 +533,7 @@ /* Have epoll_create1() */ #undef HAVE_EPOLL_CREATE1 +/* Have sigprocmask */ +#undef HAVE_SIGPROCMASK + #endif /* _DIX_CONFIG_H_ */ diff --git a/os/inputthread.c b/os/inputthread.c index e815319..dec668a 100644 --- a/os/inputthread.c +++ b/os/inputthread.c @@ -503,7 +503,11 @@ extern int InputThreadUnregisterDev(int fd) int xthread_sigmask(int how, const sigset_t *set, sigset_t *oldset) { +#ifdef HAVE_SIGPROCMASK return sigprocmask(how, set, oldset); +#else + return 0; +#endif } #endif diff --git a/os/utils.c b/os/utils.c index ac55cd7..6243310 100644 --- a/os/utils.c +++ b/os/utils.c @@ -1294,7 +1294,7 @@ SmartScheduleInit(void) #endif } -#ifdef SIG_BLOCK +#ifdef HAVE_SIGPROCMASK static sigset_t PreviousSignalMask; static int BlockedSignalCount; #endif @@ -1302,7 +1302,7 @@ static int BlockedSignalCount; void OsBlockSignals(void) { -#ifdef SIG_BLOCK +#ifdef HAVE_SIGPROCMASK if (BlockedSignalCount++ == 0) { sigset_t set; @@ -1324,7 +1324,7 @@ OsBlockSignals(void) void OsReleaseSignals(void) { -#ifdef SIG_BLOCK +#ifdef HAVE_SIGPROCMASK if (--BlockedSignalCount == 0) { xthread_sigmask(SIG_SETMASK, &PreviousSignalMask, 0); } @@ -1334,7 +1334,7 @@ OsReleaseSignals(void) void OsResetSignals(void) { -#ifdef SIG_BLOCK +#ifdef HAVE_SIGPROCMASK while (BlockedSignalCount > 0) OsReleaseSignals(); input_force_unlock(); -- 2.8.3 _______________________________________________ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: https://lists.x.org/mailman/listinfo/xorg-devel