Tue 09 Dec 2008 09:28:47 AM UTC, original submission:
It's hard to tell whether the bug is there or somewhere else, I just fixed it there. This is based on startup 0.20.0.
The problem: on screens that only have 16 bit depth, applications get X11 errors, and empty windows. This happens on some systems only.
Apparent reason: context.m looks for a 24/32 bit visual, and uses that. In other places, it uses bitmaps based on the screen depth, which is 16 bit. On systems that offer 32 bit visuals on 16 bit screens, this causes X11 to f*ck up.
Side note: I don't remember whether SuSE 11 or Ubutntu 8.04 was the one exhibiting the problem, or maybe even both.
I fixed this by adding a simple patch:
--- Source/x11/context-old.c 2008-11-03 11:30:31.000000000 +0100
+++ Source/x11/context.c 2008-11-03 11:34:27.000000000 +0100
@@ -698,8 +698,11 @@
/* use default */
if (!context->visual) {
+#if 0
if ((context->attribs->flags & RC_DefaultVisual)
- || !bestContext(dpy, screen_number, context)) {
+ || !bestContext(dpy, screen_number, context))
+#endif
+ {
context->visual = DefaultVisual(dpy, screen_number);
context->depth = DefaultDepth(dpy, screen_number);
context->cmap = DefaultColormap(dpy, screen_number);
Basically disabling the "best context" thing here. Using
the default seems to work better. I have no way of knowing
whether it might break other things, but it hasn't failed
me so far.
|