[Xr] Xr support for non-X rendering
Carl Worth
cworth at east.isi.edu
Mon Apr 21 13:55:05 PDT 2003
After an extended hiatus, Xr/Xc development is finally moving again.
The big change is in Xc which was a dumb stub before, but is now an
honest abstraction layer providing either server-side rendering
through the RENDER extension, or client-side rendering through the new
libic library, (which comes from the same code used for the software
fallback for RENDER).
So Xr can now be used to draw to local image buffers without an X
server being involved at all. (This probably means that Xr/Xc should
get new names -- suggestions welcome).
There's some framework to let Xc draw to old non-RENDER servers using
libic and core X graphics, (XPutImage), but that functionality is not
finished and will likely just crash your app. if you try to use it.
There are several API changes to Xr. The most common fixes to code
should be simple, along the lines of:
XrCreate(dpy) -> XrCreate();
XrSetDrawable(xrs, drawable); --\ XrSetTargetDrawable(xrs, dpy, drawable);
XrSetVisual(xrs, visual); --/
There's also a big change in that XrPushGroup/XrPopGroup have been
dropped from the API. There are new mechanisms for managing separate
surfaces instead. I'll describe that in a separate message.
The latest bits are available in CVS from keithp.com:
http://keithp.com/cvs.html
There are now four libraries that make up the Xr/Xc collection, so
you'll need the following modules from CVS:
Xr
Xc
libic
libpixregion
The xrtest module contains a few simple programs that demonstrate
basic usage of Xr.
-Carl
PS. I've CCed a few of you that posted messages about Xr back when
render at xfree86.org still existed. If you're interested in following
Xr, please subscribe to the new xr at xwin.org mailing list:
http://xwin.org/cgi-bin/mailman/listinfo/xwin
More information about the cairo
mailing list