[cairo] GTK+, Cairo, XLib integration for fast 2D graphics drawing

Christos Sotiriou csotiriou at gmail.com
Sun Mar 18 08:37:06 PDT 2012

Hello all,

I have a serious 2D drawing performance problem with GTK+ and Cairo on a
GTK+ linux app. I suspect that my implementation does not use any Xlib or
other 2D acceleration (is it supported by GTK/Cairo?).

I was wondering if you could help me.

My GTK+ application is based around a main application window is used for
drawing a very large number of drawables (>100K) (mainly rectangles) on a
map, and should support both scrolling and zooming in and out.

I have implemented this main window as a scrolled window, i.e.
GtkScrolledWindow (http://developer.gnome.org/gtk3/stable/ ...
containing a GtkLayout (

The GtkLayout is drawn upon using the cairo context provided by function
gdk_cairo_create() on the GTK_LAYOUT()->bin_window. I hope this is making

My problem is that drawing is too, too slow when drawing >100K rectangles.
I have tried double buffering in two ways (a) by using a cairo image
surface, drawing upon it and then copying the pattern to my drawing
context, and (b) by using cairo's surface_create_similar() function, which
supposedly uses X.

I have found that drawing is simply toooooo slow, every which way.

What am I doing wrong? How can I use cairo's Xlib capability without
explicitly creating an Xlib surface?

Any help is very much appreciated.

(email:csotiriou at gmail.com)

Christos P. Sotiriou
email: csotiriou at gmail.com
Cell: +30 697 8984 222
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cairographics.org/archives/cairo/attachments/20120318/1b5d7c8c/attachment.html>

More information about the cairo mailing list