<span style="color:rgb(0,51,0)">Thanks for your email, and the link. It is very useful.</span><br style="color:rgb(0,51,0)"><br style="color:rgb(0,51,0)"><span style="color:rgb(0,51,0)">One thought that springs in mind is to modify my application to work at the pixel level, rather than the vector level, </span><i style="color:rgb(0,51,0)">i.e.</i><span style="color:rgb(0,51,0)"> using GdkPixbuf or drawing, instead of the GTK/Cairo interface, and that may well resolve the speed issue.</span><br style="color:rgb(0,51,0)">
<br style="color:rgb(0,51,0)"><span style="color:rgb(0,51,0)">However, I found the Cairo API as very convenient, due to the universal way it handles multiple image back-ends, and would be interested to understand why it is slow, as it claims to use the X render extention (does it indeed?) and how to speed my application up.</span><br>
<br><div class="gmail_quote">On 18 March 2012 23:15, Dov Grobgeld <span dir="ltr"><<a href="mailto:dov.grobgeld@gmail.com">dov.grobgeld@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="border-left:1px solid rgb(204,204,204);margin:0pt 0pt 0pt 0.8ex;padding-left:1ex">
<div dir="ltr"><font face="arial,helvetica,sans-serif">For software rendering I have found agg to be much faster than cairo (at least it was when I tested a few years back, things may have changed since then). <br><br>Also you may consider using my GtkViewerWidget for zooming and scrolling. There are examples including how to use it with both cairo and agg at:<br>
<br><a href="http://giv.sourceforge.net/gtk-image-viewer/gtkimageviewer_tutorial.html" target="_blank">http://giv.sourceforge.net/gtk-image-viewer/gtkimageviewer_tutorial.html</a><br><br>Regards,<br>Dov<br><br></font><br>
<div class="gmail_quote"><div><div></div><div class="h5">
On Sun, Mar 18, 2012 at 17:37, Christos Sotiriou <span dir="ltr"><<a href="mailto:csotiriou@gmail.com" target="_blank">csotiriou@gmail.com</a>></span> wrote:<br></div></div><blockquote class="gmail_quote" style="border-left:1px solid rgb(204,204,204);margin:0pt 0pt 0pt 0.8ex;padding-left:1ex">
<div><div></div><div class="h5">
Hello all, <br><br>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?).<br><br>I was wondering if you could help me.<br><br>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.<br><br>I have implemented this main window as a scrolled window, i.e. GtkScrolledWindow (<a href="http://developer.gnome.org/gtk3/stable/GtkScrolledWindow.html" target="_blank">http://developer.gnome.org/gtk3/stable/ ... indow.html</a>), containing a GtkLayout (<a href="http://developer.gnome.org/gtk3/stable/GtkLayout.html" target="_blank">http://developer.gnome.org/gtk3/stable/GtkLayout.html</a>).<br>
<br>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.<br><br>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.<br><br>I have found that drawing is simply toooooo slow, every which way. <br><br>What am I doing wrong? How can I use cairo's Xlib capability without explicitly creating an Xlib surface?<br>
<br>Any help is very much appreciated.<br><br></div></div></blockquote></div></div></blockquote></div><br>-- <br>--------------------------------------------------------------------------<br>Christos P. Sotiriou<br>email: <a href="mailto:csotiriou@gmail.com">csotiriou@gmail.com</a><br>
Cell: +30 697 8984 222<br>