I finally got around to fixing: http://bugzilla.mugshot.org/show_bug.cgi?id=1194 Which was that *any* call to hippo_canvas_emit_resize_needed() would cause the entire canvas to repaint, rather than just the parts that ended up getting resized. (This caused prelighting in the bigboard to be very slow, etc. It was a bad thing.) With the fix, I made hippo_canvas_item_emit_resize_needed() act like gtk_widget_queue_resize_no_redraw() not like gtk_widget_queue_draw(): it doesn't automatically cause the item to be redrawn unless it resized. This means that some code needs to call hippo_canvas_item_emit_resize_needed(item) and hippo_canvas_item_paint_needed(item, 0, 0, -1, -1) as well. (E.g.: changing the orientation of a box only needs to call emit_resize_needed(), since there is no redrawing unless things resize or move around, but changing the border width of a box needs to call both emit_resize_needed() and emit_paint_needed(), since that can change the drawn border and background.) I went through bigboard and the Mugshot client, and found exactly one affected call to emit_resize_needed (plus some in hippo-canvas itself), and the one call in the Mugshot client didn't matter in practice, but the potential for incompatibility exists. - Owen
Attachment:
signature.asc
Description: This is a digitally signed message part