[cairo] cairo release 1.12.4 now available
Uli Schlachter
psychon at znc.in
Sat Dec 22 15:38:07 PST 2012
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."
More information about the cairo
mailing list