Appears to be a problem when using Qt2.3.1 with Xft. It looks
like Qt is maintaining a global linked-list of things it calls
qt_ft_draw structures; it adds one to the list at various times,
but in particular every time a QPixmap is created, and it removes
one when a QPixmap is destroyed. And it traverses the list
linearly to look for one every time updatePen, setClipping,
drawPixmap, or drawText is called on a QPainter.
Since we create squillions of pixmaps which then persist for a
long time, and we do lots of QPainter operations, this really
screws things up for us -- we end up spending almost all of our
rendering time traversing a single linked list.
Qt3 appears to have a completely different way of handling Xft,
which I guess doesn't have this rather obvious problem. Haven't
looked at Qt2.3.2, but the change log doesn't mention this.
The obvious user workaround is not to use Xft (font smoothing)
with KDE2/Qt2 -- on this system the default is not to use it, and
you have to set the QT_XFT environment variable true to do so. I
can't think of an easy programmatic workaround at the moment.
I'll copy this to the bug report and add a note to our README.