GTK+, Cairo, XLib integration for fast 2D graphics drawing
Christos Sotiriou <[email protected]>
| Newsgroups | gmane.comp.lib.cairo |
|---|---|
| Message-ID | <CANp+zOGVqjosqOXp62FD-gv84+YMrrEyyza1gC1JQkvhXCbvJA@mail.gmail.com> |
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/ ... indow.html<http://developer.gnome.org/gtk3/stable/GtkScrolledWindow.html>), containing a GtkLayout ( http://developer.gnome.org/gtk3/stable/GtkLayout.html). 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 sense. 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. Christos. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ (email:[email protected]) -- -------------------------------------------------------------------------- Christos P. Sotiriou email: [email protected] Cell: +30 697 8984 222 -- cairo mailing list [email protected] http://lists.cairographics.org/mailman/listinfo/cairo