I'll test ppa8 version a bit later and get back with results, but I'm afraid it won't help.
I've tried to implement fix proposed by upstream myself based on ppa3 version (using gdk_cairo_rectangle + cairo_fill). Looks like it is cairo performance problem. The following implementation of on_expose function produces 20-30%CPU:
I'll test ppa8 version a bit later and get back with results, but I'm afraid it won't help.
I've tried to implement fix proposed by upstream myself based on ppa3 version (using gdk_cairo_rectangle + cairo_fill). Looks like it is cairo performance problem. The following implementation of on_expose function produces 20-30%CPU:
static gboolean on_expose( GtkWidget* widget, GdkEventExpose* evt, gpointer user_data) create( evt->window) ; cairo_set_ source_ pixbuf (cr, bg_img, 0, 0); cairo_rectangle (cr, &evt->area); destroy( cr);
{
cairo_t *cr = gdk_cairo_
gdk_
gdk_
cairo_fill(cr);
cairo_
return FALSE;
}
Falling back to deprecated api uses only 1-2% CPU (need -DGDK_ENABLE_ DEPRECATED and -DGDK_PIXBUF_ ENABLE_ DEPRECATED compile flags):
static gboolean on_expose( GtkWidget* widget, GdkEventExpose* evt, gpointer user_data) new(evt- >window) ; draw_pixbuf( evt->window,
gc,
bg_ img,
evt- >area.x, evt->area.y,
evt- >area.x, evt->area.y,
evt- >area.width, evt->area.height,
GDK_ RGB_DITHER_ NONE, 0, 0); unref(gc) ;
{
GdkGC *gc = gdk_gc_
gdk_
g_object_
return FALSE;
}
Looks like a new API 20-30 time slower than an old one. May be this was fixed in never versions of gdk. Here in maverick I have:
libgdk2.0-0 version 2.22.0-0ubuntu1
libgdk-pixbuf2.0-0 version 2.22.0-0ubuntu1
libcairo2 version 1.10.0-1ubuntu3