| Summary: | Konqueror has low performance on some pages | ||
|---|---|---|---|
| Product: | [Applications] konqueror | Reporter: | Michal Vyskocil <michal.vyskocil> |
| Component: | khtml renderer | Assignee: | Konqueror Bugs <konqueror-bugs-null> |
| Status: | RESOLVED FIXED | ||
| Severity: | normal | CC: | maksim |
| Priority: | NOR | ||
| Version First Reported In: | unspecified | ||
| Target Milestone: | --- | ||
| Platform: | Gentoo Packages | ||
| OS: | Linux | ||
| Latest Commit: | Version Fixed In: | ||
| Sentry Crash Report: | |||
|
Description
Michal Vyskocil
2005-09-08 14:10:27 UTC
hmm, appears to be stuck in some renderer code; need to re-check on the machine with the debug build, though 0 0xb746c69c in QChar::category () from /opt/kde3.5/lib/libqt-mt.so.3 #1 0xb6455923 in khtml::appendRun () from /opt/kde3.5/lib/libkhtml.so.4 #2 0xb64565dd in khtml::RenderBlock::bidiReorderLine () from /opt/kde3.5/lib/libkhtml.so.4 #3 0xb6459ffd in khtml::RenderBlock::layoutInlineChildren () from /opt/kde3.5/lib/libkhtml.so.4 #4 0xb6461f88 in khtml::RenderBlock::layoutBlock () from /opt/kde3.5/lib/libkhtml.so.4 #5 0xb64624e1 in khtml::RenderBlock::layout () from /opt/kde3.5/lib/libkhtml.so.4 #6 0xb6461b0e in khtml::RenderBlock::layoutBlockChildren () from /opt/kde3.5/lib/libkhtml.so.4 #7 0xb646220f in khtml::RenderBlock::layoutBlock () from /opt/kde3.5/lib/libkhtml.so.4 #8 0xb64624e1 in khtml::RenderBlock::layout () from /opt/kde3.5/lib/libkhtml.so.4 #9 0xb6461b0e in khtml::RenderBlock::layoutBlockChildren () from /opt/kde3.5/lib/libkhtml.so.4 #10 0xb646220f in khtml::RenderBlock::layoutBlock () from /opt/kde3.5/lib/libkhtml.so.4 #11 0xb64624e1 in khtml::RenderBlock::layout () from /opt/kde3.5/lib/libkhtml.so.4 #12 0xb6461b0e in khtml::RenderBlock::layoutBlockChildren () from /opt/kde3.5/lib/libkhtml.so.4 #13 0xb646220f in khtml::RenderBlock::layoutBlock () from /opt/kde3.5/lib/libkhtml.so.4 #14 0xb64624e1 in khtml::RenderBlock::layout () from /opt/kde3.5/lib/libkhtml.so.4 #15 0xb6461b0e in khtml::RenderBlock::layoutBlockChildren () from /opt/kde3.5/lib/libkhtml.so.4 #16 0xb646220f in khtml::RenderBlock::layoutBlock () from /opt/kde3.5/lib/libkhtml.so.4 #17 0xb64624e1 in khtml::RenderBlock::layout () from /opt/kde3.5/lib/libkhtml.so.4 #18 0xb6461b0e in khtml::RenderBlock::layoutBlockChildren () from /opt/kde3.5/lib/libkhtml.so.4 #19 0xb646220f in khtml::RenderBlock::layoutBlock () from /opt/kde3.5/lib/libkhtml.so.4 #20 0xb64624e1 in khtml::RenderBlock::layout () from /opt/kde3.5/lib/libkhtml.so.4 #21 0xb6461b0e in khtml::RenderBlock::layoutBlockChildren () from /opt/kde3.5/lib/libkhtml.so.4 #22 0xb646220f in khtml::RenderBlock::layoutBlock () from /opt/kde3.5/lib/libkhtml.so.4 #23 0xb64624e1 in khtml::RenderBlock::layout () from /opt/kde3.5/lib/libkhtml.so.4 #24 0xb645db6e in khtml::RenderBlock::collapseMargins () from /opt/kde3.5/lib/libkhtml.so.4 #25 0xb6461b23 in khtml::RenderBlock::layoutBlockChildren () from /opt/kde3.5/lib/libkhtml.so.4 #26 0xb646220f in khtml::RenderBlock::layoutBlock () from /opt/kde3.5/lib/libkhtml.so.4 #27 0xb64624e1 in khtml::RenderBlock::layout () from /opt/kde3.5/lib/libkhtml.so.4 #28 0xb6461b0e in khtml::RenderBlock::layoutBlockChildren () from /opt/kde3.5/lib/libkhtml.so.4 #29 0xb646220f in khtml::RenderBlock::layoutBlock () from /opt/kde3.5/lib/libkhtml.so.4 #30 0xb64624e1 in khtml::RenderBlock::layout () from /opt/kde3.5/lib/libkhtml.so.4 #31 0xb645db6e in khtml::RenderBlock::collapseMargins () from /opt/kde3.5/lib/libkhtml.so.4 #32 0xb6461b23 in khtml::RenderBlock::layoutBlockChildren () from /opt/kde3.5/lib/libkhtml.so.4 #33 0xb646220f in khtml::RenderBlock::layoutBlock () from /opt/kde3.5/lib/libkhtml.so.4 #34 0xb64624e1 in khtml::RenderBlock::layout () from /opt/kde3.5/lib/libkhtml.so.4 #35 0xb6461b0e in khtml::RenderBlock::layoutBlockChildren () from /opt/kde3.5/lib/libkhtml.so.4 #36 0xb646220f in khtml::RenderBlock::layoutBlock () from /opt/kde3.5/lib/libkhtml.so.4 #37 0xb64624e1 in khtml::RenderBlock::layout () from /opt/kde3.5/lib/libkhtml.so.4 #38 0xb645db6e in khtml::RenderBlock::collapseMargins () from /opt/kde3.5/lib/libkhtml.so.4 #39 0xb6461b23 in khtml::RenderBlock::layoutBlockChildren () from /opt/kde3.5/lib/libkhtml.so.4 The same problem occurs in version 3.3.2 on Debian Testing I can confirm, Konqueror 3.4.2 on Mandriva 2006 beta Same on Konqueror 3.5.0 @ Gentoo 2005.1 i didn't have any problems on the first link ( http://www.abclinuxu.cz/forum/show/92887), but I confirm for the second (http://www.abclinuxu.cz/forum/show/89011) on Konqueror 3.5 on KDE 3.5.0 using Gentoo Konq. 3.5.1 -- same thing. With Konqueror 3.5 on Mandriva ... http://www.abclinuxu.cz/forum/show/92887 - shows empty window (tab) for several seconds with CPU at 100% http://www.abclinuxu.cz/forum/show/89011 - Konqueror freezes for several minutes with CPU at 100% http://www.abclinuxu.cz/forum/show/77095 - same as the first http://www.abclinuxu.cz/blog/Yeti/2005/9/7/100663 - the link does not work > http://www.abclinuxu.cz/blog/Yeti/2005/9/7/100663 - the link does not work
Well, it doesn't work in any browser. Not really a Konq. problem...
http://en.wikipedia.org/wiki/Wikipedia:Babel cpu at 100% and Konqueror is very non-snappy. At least the last wikipedia.org link is caused by some extremely expensive calls to QFontMetrics::width() SVN commit 552677 by ggarand:
avoid triggering a cascade of pointless relayouts when invalidating floats.
BUG: 112231
M +2 -2 render_block.cpp
M +3 -1 render_object.cpp
--- branches/KDE/3.5/kdelibs/khtml/rendering/render_block.cpp #552676:552677
@@ -1221,7 +1221,7 @@
// change (because it has more available line width).
// So go ahead and mark the item as dirty.
child->setChildNeedsLayout(true);
- if (child->hasFloats())
+ if (!child->flowAroundFloats() && child->hasFloats())
child->markAllDescendantsWithFloatsForLayout();
if (child->containsPageBreak())
child->setNeedsLayout(true);
@@ -2420,7 +2420,7 @@
void RenderBlock::markAllDescendantsWithFloatsForLayout(RenderObject* floatToRemove)
{
- setNeedsLayout(true);
+ setChildNeedsLayout(true);
if (floatToRemove)
removeFloatingObject(floatToRemove);
--- branches/KDE/3.5/kdelibs/khtml/rendering/render_object.cpp #552676:552677
@@ -1531,8 +1531,10 @@
p = p->containingBlock();
}
- if (outermostBlock)
+ if (outermostBlock) {
+ outermostBlock->setNeedsLayout(true);
outermostBlock->markAllDescendantsWithFloatsForLayout(this);
+ }
}
if (isPositioned()) {
SVN commit 553287 by ggarand:
a tad safer version repaint wise, of #112231 fix.
not sure if it matters, just not taking the chance.
CCBUG: 112231
M +1 -0 render_block.cpp
M +1 -3 render_object.cpp
--- branches/KDE/3.5/kdelibs/khtml/rendering/render_block.cpp #553286:553287
@@ -2420,6 +2420,7 @@
void RenderBlock::markAllDescendantsWithFloatsForLayout(RenderObject* floatToRemove)
{
+ dirtyFormattingContext(false);
setChildNeedsLayout(true);
if (floatToRemove)
--- branches/KDE/3.5/kdelibs/khtml/rendering/render_object.cpp #553286:553287
@@ -1531,10 +1531,8 @@
p = p->containingBlock();
}
- if (outermostBlock) {
- outermostBlock->setNeedsLayout(true);
+ if (outermostBlock)
outermostBlock->markAllDescendantsWithFloatsForLayout(this);
- }
}
if (isPositioned()) {
Yeah, this seems to be fixed in konqueror 3.5.4 :D Yes, Konqueror 3.5.4 works fine :-). Many thanks for your great work! |