[cairo] Concerns regarding cairo-xcb backend

Alexandre Bique bique.alexandre at gmail.com
Tue Dec 12 13:47:37 UTC 2017


I'm improving the Linux port of the u-he plugins (www.u-he.com) and I was
using Xlib before but I've switched to xcb now, and I'm using cairo-xcb
instead of cairo-xlib for the painting.

While using the cairo-xcb backend I've come across the following assertion:

cairo-xcb-screen.c:219: _get_screen_index: Assertion `!"reached"' failed.

I've looked at the source code and I was surprised to see that the
cairo-xcb backend has global variables (mutex, list of
cairo_xcb_connection, ...), and I wonder if this is the issue in my case.

The application I'm working on is a software synthesizer plugin (VST2/VST3)
which a Digital Audio Workstation like Bitwig Studio (www.bitwig.com) can
use and display.

The DAW loads the plugins, can show the plugin window (using XEmbed), hide
or close the plugin window. In case the plugin window is closed I close my
xcb connection, free my FT library handle and destroy my cairo xcb surface.

So if the window is shown/closed/shown/closed/... it will initialize and
destroy xcb+FT+cairo_xcb_surface for each of them.

And I wonder if this is the issue: cairo_xcb seems to not work properly in
such scenario.

Do you have any experience or ideas to share?

I've been testing on Archlinux, with cairo-1.15.8-2

Alexandre Bique
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.cairographics.org/archives/cairo/attachments/20171212/fbc42057/attachment.html>

More information about the cairo mailing list