On 13.09.2011 00:41, Eric Wasylishen wrote:
On 2011-09-12, at 3:48 PM, Fred Kiefer wrote:
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.
Ah, I see. Transparent windows works fine for me with XGCairoSurface now -
perhaps it was a limitation in cairo that was fixed since then.
btw, I added the test to GSTest that I was meaning to write for a while, for testing
-[NSWindow setAlphaValue:] and -[NSWindow setBackgroundColor:] for colors with an alpha<
1. It's called "Transparency-test".
Thank you for this great test. It shows how powerful GNUstep already is
in this area. Sadly it also shows that nobody has ever used the alpha
slider in the colour panel before, it looks just horrible.
As for transparent windows working with XGCairoSurface, I would not be
to surprised to learn that you are using X11 with 32 bit depth. But
then, who isn't these times? Maybe we could just live with that
limitation, when five years ago this would have excluded almost everybody.
_______________________________________________
Discuss-gnustep mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/discuss-gnustep