summaryrefslogtreecommitdiff
path: root/xserver/mi
diff options
context:
space:
mode:
authorMatthieu Herrb <matthieu@cvs.openbsd.org>2009-01-12 20:17:48 +0000
committerMatthieu Herrb <matthieu@cvs.openbsd.org>2009-01-12 20:17:48 +0000
commitd1c05312af9d63ef874b6eab5ef7122610ec0f1f (patch)
tree8b219bdb39de36206c268fde2477f0bc12de47d4 /xserver/mi
parente2393a32cdf018951efe9ed1d2f6b8031c242185 (diff)
Update to xserver 1.5.3 + latests commits on server-1.5-branch.
tested by stsp@, david@, form@, ckuethe@, oga@. thanks.
Diffstat (limited to 'xserver/mi')
-rw-r--r--xserver/mi/mieq.c6
-rw-r--r--xserver/mi/miinitext.c3
2 files changed, 8 insertions, 1 deletions
diff --git a/xserver/mi/mieq.c b/xserver/mi/mieq.c
index aaa247d6c..803724708 100644
--- a/xserver/mi/mieq.c
+++ b/xserver/mi/mieq.c
@@ -145,6 +145,7 @@ mieqEnqueue(DeviceIntPtr pDev, xEvent *e)
oldtail = (oldtail - 1) % QUEUE_SIZE;
}
else {
+ static int stuck = 0;
newtail = (oldtail + 1) % QUEUE_SIZE;
/* Toss events which come in late. Usually this means your server's
* stuck in an infinite loop somewhere, but SIGIO is still getting
@@ -152,8 +153,13 @@ mieqEnqueue(DeviceIntPtr pDev, xEvent *e)
if (newtail == miEventQueue.head) {
ErrorF("[mi] EQ overflowing. The server is probably stuck "
"in an infinite loop.\n");
+ if (!stuck) {
+ xorg_backtrace();
+ stuck = 1;
+ }
return;
}
+ stuck = 0;
miEventQueue.tail = newtail;
}
diff --git a/xserver/mi/miinitext.c b/xserver/mi/miinitext.c
index 55faec333..4f252d41f 100644
--- a/xserver/mi/miinitext.c
+++ b/xserver/mi/miinitext.c
@@ -661,7 +661,8 @@ InitExtensions(argc, argv)
#endif
#ifdef GLXEXT
- GlxPushProvider(&__glXDRISWRastProvider);
+ if (serverGeneration == 1)
+ GlxPushProvider(&__glXDRISWRastProvider);
if (!noGlxExtension) GlxExtensionInit();
#endif
}