Reinhard Tartler | 7 Dec 23:16 2012
Picon

Re: cairo release 1.12.4 now available

The following message is a courtesy copy of an article
that has been posted to gmane.comp.lib.cairo as well.

On Sa, Okt 06, 2012 at 11:56:13 (CEST), Chris Wilson wrote:

> On Sat, 6 Oct 2012 11:31:14 +0200, Andreas Radke <andyrtr <at> archlinux.org> wrote:
>> I've packaged the new release and it works well in ArchLinux with my
>> local Awesome WM setup.
>> 
>> Remote connections using OpenNX are broken when used with Xfce.
>> Xfce-panel and menu keep crashing instantly until I downgrade to 1.12.2
>> on the server.
>
> There is not enough information here to begin to access the cause. A
> stack trace would be a good start.

It seems that cairo unconditionally assumes that the xserver does
support the latest version of the Xrender extension:

http://cgit.freedesktop.org/cairo/tree/src/cairo-xlib-display.c?id=1.12.2#n217

This assumption does not hold for many non-Xorg Xservers, including
nxagent, which is used by NX and derivatives like OpenNX, FreeNX or
X2Go:

http://code.x2go.org/gitweb?p=nx-libs.git;a=blob;f=nx-X11/include/extensions/render.h;h=691c63fdecfcbc29c3625fd2b85ae1400a7b64e6;hb=HEAD#l109

Note that the defines for Operators only available in version 0.11 in
Xorg are *not* included:

/*
 * Operators only available in version 0.11
 */
#define PictOpBlendMinimum                          0x30
#define PictOpMultiply                              0x30
#define PictOpScreen                                0x31
#define PictOpOverlay                               0x32
#define PictOpDarken                                0x33
#define PictOpLighten                               0x34
#define PictOpColorDodge                            0x35
#define PictOpColorBurn                             0x36
#define PictOpHardLight                             0x37
#define PictOpSoftLight                             0x38
#define PictOpDifference                            0x39
#define PictOpExclusion                             0x3a
#define PictOpHSLHue                                0x3b
#define PictOpHSLSaturation                         0x3c
#define PictOpHSLColor                              0x3d
#define PictOpHSLLuminosity                         0x3e
#define PictOpBlendMaximum                          0x3e

Also, note that nxagent does not use pixman (which is the software
implementation that Xorg uses nowadays), but the old, previous
implementation of low-level pixel rendering, AFAIUI for example:

http://code.x2go.org/gitweb?p=nx-libs.git;a=blob;f=nx-X11/programs/Xserver/fb/fbcompose.c;h=f8169995fdb39b83dd71f978e28e00e87abf1572;hb=HEAD#l3395

I would assume that there are still a number of other non-Xorg X11
servers (most of them commercial) that do not support these
operations. 

Chris, is there any chance to fix/change cairo to work also without
operators that are only available in version 0.11?

--

-- 
Gruesse/greetings,
Reinhard Tartler, KeyID 945348A4

Gmane