[cairo] Cairo SkyOS backend

skyos at liwest.at skyos at liwest.at
Tue Nov 21 06:47:38 PST 2006


Hi!

I'm in the middle of making a SkyOS backend for cairo-1.2.0 which works quite nice already. (at least according to the cairo test suite).

Anyway, I hope you can answer me a few technical questions regarding the recommended communication between cairo and the native window system.

1.
Using a "cairo_skyos_surface_create" function the SkyOS backend establishes a "connection" between a cairo surface and a native window. (Similar to the other backends).

The cairo_skyos_surface_create allocates a memory buffer with the same size as the current window content and copies the current window content into this buffer. 
When now cairo draws into this buffer, how is the content supposed to get "on screen" again? (SkyOS internally double buffers all drawing functions, so as long as no GI_SwapWindow is called nothing will be displayed). Is this call to the swap function supposed to be somewhere in the cairo/SkyOS backend or is the application using cairo responsible for handling this?

For instance, in order to make the cairo-test.c display content on the screen I had to insert a GI_SwapWindow right before terminating the test/releasing the surface. 

2. 
What happens if the native window system draws into the same window which is "in use" by cairo currently? Is this allowed at all, by definition?


3. Color space
Does the native windowing system has to handle all color spaces (RGB16,RGB24,RGB32, ARGB32, ....) or does cairo implicit "conversions" if the backend doesn't support a specific color depth?


Anyway, with the GI_SwapWindow workaround the testsuite works fine, no test failed. and indeed, its rather fast, and very cool to see all the graphic effects while the test is running.

Hope someone can help me with my questions,
   Thanks,
    Robert!


More information about the cairo mailing list