Goodness - it was bad enough before when we drew little tiny updates over and over (triggering X11 damage events to the compositing window manager) - I had thought we had things better now with invalidate / expose, but it could be that the repaint areas it is tracking become too small.
When we get asked to repaint a lot of small areas, we build up a list of objects. We don't have a spatial data-structure to index that lookup, so we do a linear search through our object tree. That might be the hit right there.. if GTK is not combining our exposed areas into one bigger area. (I bet it is not), we may be burning lots of time wading through our own data-structures.
That sounds quite plausible.
Goodness - it was bad enough before when we drew little tiny updates over and over (triggering X11 damage events to the compositing window manager) - I had thought we had things better now with invalidate / expose, but it could be that the repaint areas it is tracking become too small.
When we get asked to repaint a lot of small areas, we build up a list of objects. We don't have a spatial data-structure to index that lookup, so we do a linear search through our object tree. That might be the hit right there.. if GTK is not combining our exposed areas into one bigger area. (I bet it is not), we may be burning lots of time wading through our own data-structures.