Ah, I just found out the solution is trivial. GdkPixmap *pixmap;
/* Create a new backing pixmap of the appropriate size */ static gint configure_event (GtkWidget *widget, GdkEventConfigure *event) { cairo_t *cr; if (pixmap) gdk_pixmap_unref(pixmap); pixmap = gdk_pixmap_new(widget->window, widget->allocation.width, widget->allocation.height, -1); cr = gdk_cairo_create (pixmap); /* do your drawing here */ cairo_destroy (cr); return TRUE; } static gint expose_event_cb (GtkWidget *widget, GdkEventExpose *event) { /* copy relevant part of pixmap back to screen */ gdk_draw_pixmap(widget->window, widget->style->fg_gc[GTK_WIDGET_STATE (widget)], pixmap, event->area.x, event->area.y, event->area.x, event->area.y, event->area.width, event->area.height); return FALSE; } _______________________________________________ gtk-app-devel-list mailing list gtk-app-devel-list@gnome.org http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list