Cause of depth 16 color problem found

Hans-Martin Mosner hmm at heeg.de
Thu Sep 29 15:56:41 MDT 2005


Hi folks,
I've always wondered why MOL did not work correctly on my 16-bit X 
display when I use 16-bit Macintosh screen depth.
Today I debugged a little and found the cause of the problem (and a 
solution):
When using 16 bit depth, MOL needs to convert from 555 format as used by 
the Mac to 565 format as used by X.
It does this in the vs.blit_hook_pre function.
After sending the converted bits to the X server, they are converted 
back to 555 format.
However, when we use the shm extension, the bits in the buffer are 
converted back before the X server has processed them.
I've added an XSync call in blit_rect() just before the 
vs.blit_hook_post() call, and that did the job.
I have not done any performance comparisons yet (when I want MOL to be 
reasonably fast on this old 233 MHz machine, I use fb video anyway).
Of course, the problem can be avoided by not using shm when 
pre/postprocessing of pixels is needed. I have no idea whether that 
would be faster than the XSync solution, though.

What would be the best way to get this fix into the MOL source tree?

Cheers,
Hans-Martin


More information about the mol-general mailing list