Revision 784703

Go back to digest for 16th March 2008

Optimization in KDE Base

Germain Garand committed changes in /trunk/KDE/kdelibs/khtml:

Large optimization of scrolling for pages containing "position: fixed" objects.

.replace the dumb approach of repainting the whole page always, by collecting fixed regions, repainting them individually, then blit-scrolling the remaining surface.

.also maintain a tighter count of fixed objects, so that changes of styles might trigger a switch from static to blitting (i.e. fast) background.

.consequently, go all the way to using QWidget::scroll() instead of native QWidget::move() for scrolling, so as to avoid the unescapable flicker when switching from a method to the other.

QWidget::scroll is - I believe, a tad slower, but not significantly so, and the gain in overall browsing smoothness is very satisfactory.

-change of scrolling method conveniently allows to avoid the serious scrolling bugs in 4.4 beta, making it possible to remove the disabling of alien widgets, which in turn should fix the problems Roman encountered in Kopete.

File Changes

Modified 8 files
  • /trunk/KDE/kdelibs/khtml
  •   /khtmlview.cpp
  •   /khtmlview.h
  •   /css/cssstyleselector.cpp
  •   /rendering/render_block.h
  •   /rendering/render_canvas.cpp
  •   /rendering/render_canvas.h
  •   /rendering/render_layer.cpp
  •   /rendering/render_object.cpp
8 files changed in total