[Xcb] xcb-render-util crashs
Ian Osgood
iano at quirkster.com
Mon Nov 17 08:17:17 PST 2008
On Nov 17, 2008, at 4:59 AM, Julien Danjou wrote:
> At 1225356671 time_t, Julien Danjou wrote:
>> I've discovered that cairo crashes on X server not supporting RENDER.
>> (in this case, vnc4server).
>>
>> In fact as soon as xcb-render-util sends a query version requests,
>> xcb_connection_t get erroneous, so everything crash then.
>>
>> The affected code is in cache.c:find_or_create_display()
>>
>> 152 version_cookie = xcb_render_query_version(c, 0, 10);
>> 153 formats_cookie = xcb_render_query_pict_formats(c);
>> 154 xcb_flush(c);
>>
>> when xcb_render_util_query_version(c) is called.
>>
>> I've no real clue how to correctly fix that, and I'd appreciate a
>> hint.
>> I wonder if this is really normal[1] and if
>> xcb_render_util_query_version should simply chek for extension
>> presence
>> before.
>>
>> [1] Well I know I had the same problem in awesome with Xinerama,
>> and I
>> do check for extension presence before asking for version.
>
> Any one?
>
> --
> Julien Danjou
> // ᐰ <julien at danjou.info> http://julien.danjou.info
> // 9A0D 5FD9 EB42 22F6 8974 C95C A462 B51E C2FE E5CD
Sorry, I thought you had answered your own question with [1].
Don't call any Render protocol, such as anything in render-util,
until you verify its presence on the server as you did with Xinerama.
This is a difference in behavior compared to libXrender, which does
XInitExtension internally. I think the strategy Jamey used when he
ported utility libraries from Xlib was to separate extension
initialization from extension usage. An XCB program should batch
initialize and verify all required extensions soon after connection
setup in order to minimize latency.
Ian
More information about the Xcb
mailing list