chat log is redrawn on every mouse move event resulting in high CPU load
When you move the mouse cursor over the right column of the chat log, the hovered line is redrawn on every move without changing the look, which results in high CPU load. This does not occur in the time and the nick column.Steps to reproduce:
- activate the kwin-effect which highlights redrawn areas (in German: “Extras”/“Zeichnungsbereiche hervorheben”); alternatively just watch the current CPU load
- move the mouse over the right column of the chat log
This problem is not bound to version 0.6.1 of quassel, I also noticed it in earlier versions.My System:
- Linux udo 2.6.31-gentoo-r10 #1 SMP PREEMPT Mon Mar 15 23:32:12 CET 2010 x86_64 Intel(R) Core(TM)2 Duo CPU E6750 @ 2.66GHz GenuineIntel GNU/Linux
- Qt: 4.6.2
- KDE: 4.4.2 (KDE 4.4.2)
- Quassel IRC: v0.6.1 (dist-611ebcc)
- Gentoo Use flags: (X) (-ayatana) (dbus) (-debug) (kde) (monolithic) (phonon) (-postgres) (server) (ssl) (webkit) Build Options: -trace
#1 Updated by Sputnick about 13 years ago
- Status changed from New to Assigned
- Assignee set to Sputnick
- Target version set to 0.7.0
- % Done changed from 0 to 20
Known bug, will be fixed by caching the visible layouts. Work in progress.
#2 Updated by Sputnick about 13 years ago
- Status changed from Assigned to Resolved
- % Done changed from 20 to 100
Applied in changeset 77176474b628e801ba94d9d50d0d961a12aa01c4.
Cache ChatLine layout data for visible chatlines
Up to now, we've computed e.g. the text layout for a chatline on the fly. This
happens surprisingly often, for example whenever the mouse is moved. As a result,
moving the mouse (among other things) caused high CPU load.
We now cache such data within the chatitems until the chatline goes out of view, in
which case the cache is cleared in order to not waste space needlessly.