It looks like if you could have the cairo stroker use a temporary surface in this case, it would be much faster than direct rendering. The major CPU in this bug is spent in a "tesselating" function. Long story short, it looks like there are ways to avoid activating that function. The function is used when cairo renders to xlib or xcb, which I imagine is what murrine does now. This quote indicates that drawing to a "temporary surface" and copying from there should help a lot (future cairo optimizations may fix this):
.. (T)he rasterization method (new in 1.10) used by the image backend can deal with self-intersecting polygons just fine, so there's no need for tessellating the outline polygon. .. from cairo bugzilla on this issue at https://bugs.freedesktop.org/show_bug.cgi?id=31589#c3 I assume that rendering to a temporary surface will use this faster "image" backend (6 or 7 times faster in transmission-gtk+murrine, according to cairo profiling tools I've used.) Before I dig deeper, can you tell me something about this code: pango_cairo_layout_path (cr, layout); murrine_set_color_rgba (cr, &temp, 0.5); cairo_stroke (cr); .. you mentioned "pango_cairo_layout_path (cr, layout); is slow". Is that definite, or could it be cairo_stroke(cr); Thanks! -- Using higher cpu usage https://bugs.launchpad.net/bugs/655024 You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs