On 12.09.2011 21:17, Eric Wasylishen wrote:
Based on what Fred said, it looks like the design of XGCairoXImageSurface is
flawed and won't work on 16-bit displays. (But did it work for you in the past?)
One thing you could try is switch to XGCairoSurface. In CairoContext.m, just
adjust the comments so you have:
# define _CAIRO_SURFACE_CLASSNAME XGCairoSurface
This will create a cairo xlib surface for the window buffer, instead of a cairo
image surface. Interestingly enough it seems to work for me - I don't think it
worked a few months ago.
as an aside, I would like to switch to XGCairoSurface by default at some point,
rather than fixing XGCairoXImageSurface. It would have a number of benefits,
like:
- enables subpixel antialising for fonts
- removes the need for using shared memory for the window buffer for good
performance (from what I understand, cairo will automatically use shm to
transfer bitmaps to the x server when needed).
- it may allow hardware acceleration for some operations?
If I remember correctly the reason we switched to XGCairoXImageSurface
was that with XGCairoSurface we could not get transparent windows.
Yen-Ju of the Etoile project suggested to use XGCairoXImageSurface and
this has worked remarkably well for almost five years now. If
transparency works now, even on old 24 bit displays, with XGCairoSurface
then we should switch back to that. Otherwise we need to figure out a
better way to determine which surface to use.
Fred
_______________________________________________
Discuss-gnustep mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/discuss-gnustep