Re: cairo release 1.12.4 now available
Uli Schlachter <[email protected]>
| Newsgroups | gmane.comp.lib.cairo |
|---|---|
| Message-ID | <[email protected]> |
Hi, On 21.12.2012 14:43, Klaus Stengel wrote: > On 10.12.2012 18:05, Uli Schlachter wrote: >> On 10.12.2012 13:57, Klaus Stengel wrote: >>> The main problem seems to be the function _render_operator() in >>> cairo-xlib-render.c, which just translates any cairo operator to the >>> corresponding XRender code without any checks. This function is used in >>> various calls to XRender functions. >> [...] >> >> This analysis seems correct. > > so in order to fix this properly, it would be necessary to do the > rendering in libcairo itself in case an operator ist not supported, > probably using the software implementation from libpixman? Yeah, exactly. The code for falling back to the image backend is already there, this just needs a "return CAIRO_INT_STATUS_UNSUPPORTED" in the right places. >> Let's see when someone comes around and fixes this. > > It probably makes sense to file an entry in the bugtracker then; At > least I didn't find anything mentioning that problem specifically yet. Feel free. >> For the mean time, I want to mention that cairo-xcb (and thus cairo-xlib-xcb, >> see --enable-xlib-xcb) does not have this problem and can be used. Yay! :-) > > Well, but switching to a different backend is no general solution as > long as there is no way to override the X11 backend in existing > applications somehow. In case of my problem with the Evolution mail > client, the cairo backend is actually managed through GDK, which only > supports XLib and no XCB as far as I can tell. xlib-xcb means "make cairo-xcb implement the functions for cairo-xlib". This is the only(?) exception to the rule that apps need to be changed to use a different backend. > But if the XCB interface is supposed to work, does it mean that the code > to emulate those operations is already present somewhere in the XCB > backend somewhere and just need to be backported to the classic X11 > interface? I wouldn't call it "backported", but yeah, the code is already there: http://cgit.freedesktop.org/cairo/tree/src/cairo-xcb-surface-render.c#n146 Plus the callers for this function, e.g. http://cgit.freedesktop.org/cairo/tree/src/cairo-xcb-surface-render.c#n3523 Uli -- "In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move." -- cairo mailing list [email protected] http://lists.cairographics.org/mailman/listinfo/cairo