[cairo] cairo release 1.12.4 now available

Roderick Johnstone rmj at ast.cam.ac.uk
Fri Jan 4 09:18:17 PST 2013


On 22/12/12 23:38, Uli Schlachter wrote:
> 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.

Is there any progress on a fix for this yet?

I'm evaluating Fedora 18 (currently in beta), and NX sessions are pretty 
broken for reasons that look like those outlined in this thread. 
Applications like emacs, gedit, gimp fail to start in the NX session 
with an X error message.

A search of the web suggests recent releases of OpenSUSE and Ubuntu have 
similar problems.

>
>>> 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
>

For information, I tried rebuilding the Fedora 18 Beta cairo packages 
with --enable-xlib-xcb and some things do work ok now in NX sessions on 
x86_64.

Connecting with the NX version 3 client from Windows to a KDE session 
works fine. I can start emacs and gedit and gimp ok, these previously 
would fail with an X error message. (My UK keyboard mapping is messed 
up, but that is another matter!)

Connecting with the NX version 3 client from Windows to a Gnome session 
fails to start the session.

Connecting with the NX version 4 Preview 6 client from Windows or MacOS 
to either a KDE or Gnome session fails to start the session.

Unfortunately we need the version 4 client for Mac because the version 3 
client is compiled for PPC and the Rosetta translator is no longer 
available for recent versions of MacOS.

Roderick Johnstone




More information about the cairo mailing list