summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2012-11-28 07:54:13 -0800
committerKeith Packard <keithp@keithp.com>2012-11-28 07:54:13 -0800
commit1712a45422a63f11b2146541279616fcfda09ec6 (patch)
tree2ccb8f16b6d01d08bfa60104dcee17e1caecdc45
parente54f71a2c7a1677a5c5032d1e7dc099d5204144b (diff)
parent338bec30054bb5d41cb6fdb5d37439f3c8124cad (diff)
Merge remote-tracking branch 'jturney/mingw-patches'
-rw-r--r--dix/dispatch.c4
-rw-r--r--hw/xwin/ddraw.h4
-rw-r--r--hw/xwin/win.h2
-rw-r--r--hw/xwin/winclipboardthread.c3
-rw-r--r--hw/xwin/winms.h1
-rw-r--r--os/osinit.c7
-rw-r--r--os/utils.c17
7 files changed, 34 insertions, 4 deletions
diff --git a/dix/dispatch.c b/dix/dispatch.c
index 2df1a6ea5..99ba277fb 100644
--- a/dix/dispatch.c
+++ b/dix/dispatch.c
@@ -223,7 +223,11 @@ UpdateCurrentTimeIf(void)
#define SMART_SCHEDULE_DEFAULT_INTERVAL 20 /* ms */
#define SMART_SCHEDULE_MAX_SLICE 200 /* ms */
+#if defined(WIN32) && !defined(__CYGWIN__)
+Bool SmartScheduleDisable = TRUE;
+#else
Bool SmartScheduleDisable = FALSE;
+#endif
long SmartScheduleSlice = SMART_SCHEDULE_DEFAULT_INTERVAL;
long SmartScheduleInterval = SMART_SCHEDULE_DEFAULT_INTERVAL;
long SmartScheduleMaxSlice = SMART_SCHEDULE_MAX_SLICE;
diff --git a/hw/xwin/ddraw.h b/hw/xwin/ddraw.h
index 9463049c8..1871d9551 100644
--- a/hw/xwin/ddraw.h
+++ b/hw/xwin/ddraw.h
@@ -1,3 +1,7 @@
+#ifdef __MINGW64_VERSION_MAJOR
+#include_next <ddraw.h>
+#define __XWIN_DDRAW_H
+#endif
#ifndef __XWIN_DDRAW_H
#define __XWIN_DDRAW_H
diff --git a/hw/xwin/win.h b/hw/xwin/win.h
index 180695e24..fa774bc00 100644
--- a/hw/xwin/win.h
+++ b/hw/xwin/win.h
@@ -133,6 +133,8 @@
#define WIN_MAX_KEYS_PER_KEY 4
+#define NONAMELESSUNION
+
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
diff --git a/hw/xwin/winclipboardthread.c b/hw/xwin/winclipboardthread.c
index 891278279..c8508a9b8 100644
--- a/hw/xwin/winclipboardthread.c
+++ b/hw/xwin/winclipboardthread.c
@@ -36,6 +36,7 @@
#define HAS_WINSOCK 1
#endif
#include <sys/types.h>
+#include <signal.h>
#include "winclipboard.h"
#ifdef __CYGWIN__
#include <errno.h>
@@ -431,7 +432,7 @@ winClipboardProc(void *pvNotUsed)
else {
ErrorF("winClipboardProc - Clipboard disabled - Exit from server \n");
/* clipboard thread has exited, stop server as well */
- kill(getpid(), SIGTERM);
+ raise(SIGTERM);
}
return NULL;
diff --git a/hw/xwin/winms.h b/hw/xwin/winms.h
index 5282fc982..32923e503 100644
--- a/hw/xwin/winms.h
+++ b/hw/xwin/winms.h
@@ -30,7 +30,6 @@
* Authors: Harold L Hunt II
*/
-#define NONAMELESSUNION
#define DIRECTDRAW_VERSION 0x0300
#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
diff --git a/os/osinit.c b/os/osinit.c
index 45ab5271b..6c66f9c12 100644
--- a/os/osinit.c
+++ b/os/osinit.c
@@ -102,6 +102,7 @@ OsRegisterSigWrapper(OsSigWrapperPtr newSigWrapper)
* OsSigHandler --
* Catch unexpected signals and exit or continue cleanly.
*/
+#if !defined(WIN32) || defined(__CYGWIN__)
static void
#ifdef SA_SIGINFO
OsSigHandler(int signo, siginfo_t * sip, void *unused)
@@ -146,6 +147,7 @@ OsSigHandler(int signo)
FatalError("Caught signal %d (%s). Server aborting\n",
signo, strsignal(signo));
}
+#endif /* !WIN32 || __CYGWIN__ */
void
OsInit(void)
@@ -155,6 +157,7 @@ OsInit(void)
char fname[PATH_MAX];
if (!been_here) {
+#if !defined(WIN32) || defined(__CYGWIN__)
struct sigaction act, oact;
int i;
@@ -181,6 +184,8 @@ OsInit(void)
siglist[i], strerror(errno));
}
}
+#endif /* !WIN32 || __CYGWIN__ */
+
#ifdef HAVE_BACKTRACE
/*
* initialize the backtracer, since the ctor calls dlopen(), which
@@ -241,8 +246,10 @@ OsInit(void)
#endif
}
+#if !defined(WIN32) || defined(__CYGWIN__)
if (getpgrp() == 0)
setpgid(0, 0);
+#endif
#ifdef RLIMIT_DATA
if (limitDataSpace >= 0) {
diff --git a/os/utils.c b/os/utils.c
index 3c520add5..6f75c1704 100644
--- a/os/utils.c
+++ b/os/utils.c
@@ -71,6 +71,7 @@ __stdcall unsigned long GetTickCount(void);
#if !defined(WIN32) || !defined(__MINGW32__)
#include <sys/time.h>
#include <sys/resource.h>
+# define SMART_SCHEDULE_POSSIBLE
#endif
#include "misc.h"
#include <X11/X.h>
@@ -212,6 +213,9 @@ sig_atomic_t inSignalContext = FALSE;
OsSigHandlerPtr
OsSignal(int sig, OsSigHandlerPtr handler)
{
+#if defined(WIN32) && !defined(__CYGWIN__)
+ return signal(sig, handler);
+#else
struct sigaction act, oact;
sigemptyset(&act.sa_mask);
@@ -222,6 +226,7 @@ OsSignal(int sig, OsSigHandlerPtr handler)
if (sigaction(sig, &act, &oact))
perror("sigaction");
return oact.sa_handler;
+#endif
}
/*
@@ -894,6 +899,7 @@ ProcessCommandLine(int argc, char *argv[])
i = skip - 1;
}
#endif
+#ifdef SMART_SCHEDULE_POSSIBLE
else if (strcmp(argv[i], "-dumbSched") == 0) {
SmartScheduleDisable = TRUE;
}
@@ -912,6 +918,7 @@ ProcessCommandLine(int argc, char *argv[])
else
UseMsg();
}
+#endif
else if (strcmp(argv[i], "-render") == 0) {
if (++i < argc) {
int policy = PictureParseCmapPolicy(argv[i]);
@@ -1123,6 +1130,7 @@ XNFstrdup(const char *s)
void
SmartScheduleStopTimer(void)
{
+#ifdef SMART_SCHEDULE_POSSIBLE
struct itimerval timer;
if (SmartScheduleDisable)
@@ -1132,11 +1140,13 @@ SmartScheduleStopTimer(void)
timer.it_value.tv_sec = 0;
timer.it_value.tv_usec = 0;
(void) setitimer(ITIMER_REAL, &timer, 0);
+#endif
}
void
SmartScheduleStartTimer(void)
{
+#ifdef SMART_SCHEDULE_POSSIBLE
struct itimerval timer;
if (SmartScheduleDisable)
@@ -1146,6 +1156,7 @@ SmartScheduleStartTimer(void)
timer.it_value.tv_sec = 0;
timer.it_value.tv_usec = SmartScheduleInterval * 1000;
setitimer(ITIMER_REAL, &timer, 0);
+#endif
}
static void
@@ -1157,6 +1168,7 @@ SmartScheduleTimer(int sig)
void
SmartScheduleInit(void)
{
+#ifdef SMART_SCHEDULE_POSSIBLE
struct sigaction act;
if (SmartScheduleDisable)
@@ -1172,6 +1184,7 @@ SmartScheduleInit(void)
perror("sigaction for smart scheduler");
SmartScheduleDisable = TRUE;
}
+#endif
}
#ifdef SIG_BLOCK
@@ -1227,10 +1240,10 @@ OsBlockSIGIO(void)
sigprocmask(SIG_BLOCK, &set, &PreviousSigIOMask);
ret = sigismember(&PreviousSigIOMask, SIGIO);
return ret;
- } else
- return 1;
+ }
#endif
#endif
+ return 1;
}
void