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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.