Bug 226265 - Konqueror smooth scrolling is not smooth anymore on some sites (even on kde.org)
Summary: Konqueror smooth scrolling is not smooth anymore on some sites (even on kde.org)
Status: RESOLVED FIXED
Alias: None
Product: konqueror
Classification: Applications
Component: khtml renderer (show other bugs)
Version: unspecified
Platform: unspecified Linux
: NOR normal
Target Milestone: ---
Assignee: Konqueror Developers
URL:
Keywords:
: 226535 226665 (view as bug list)
Depends on:
Blocks:
 
Reported: 2010-02-11 10:17 UTC by Szakál Dániel
Modified: 2010-02-14 21:49 UTC (History)
3 users (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Szakál Dániel 2010-02-11 10:17:41 UTC
Version:           4.4.00 (KDE 4.4.0) (using 4.4.00 (KDE 4.4.0), Arch Linux)
Compiler:          gcc
OS:                Linux (x86_64) release 2.6.32-ARCH

Konqueror smooth scrolling worked fine until kde 4.3.4, even on hard flashed pages (myspace sites). But now, smooth scrolling on some pages is simply terrible, uncontinuos, including on www.kde.org startpage
Backtrace:
QPainter::viewTransformEnabled: Painter not active                                 
QPainter::worldMatrixEnabled: Painter not active                                   
QPainter::window: Painter not active                                               
QPainter::viewport: Painter not active                                             
QPainter::clipRegion: Painter not active                                           
QPainter::opacity: Painter not active                                              
QPainter::pen: Painter not active                                                  
QPainter::brush: Painter not active                                                
QPainter::end: Painter not active, aborted                                         
QPainter::begin: Widget painting can only begin as a result of a paintEvent        
QPainter::setWorldTransform: Painter not active                                    
QPainter::setWindow: Painter not active                                            
QPainter::setViewport: Painter not active                                          
QPainter::setViewTransformEnabled: Painter not active                              
QPainter::setMatrixEnabled: Painter not active                                     
QPainter::setPen: Painter not active                                               
QPainter::setBrush: Painter not active                                             
QPainter::begin: Widget painting can only begin as a result of a paintEvent        
QPainter::translate: Painter not active                                            
QPainter::setClipRect: Painter not active                                          
QPainter::hasClipping: Painter not active                                          
QPainter::setPen: Painter not active                                               
QPainter::setBrush: Painter not active                                             
QPainter::drawRects: Painter not active                                            
QPainter::hasClipping: Painter not active                                          
QPainter::setPen: Painter not active                                               
QPainter::setBrush: Painter not active                                             
QPainter::drawRects: Painter not active                                            
QPainter::hasClipping: Painter not active                                          
QPainter::setPen: Painter not active                                               
QPainter::setBrush: Painter not active                                             
QPainter::drawRects: Painter not active                                            
QPainter::hasClipping: Painter not active                                          
QPainter::setPen: Painter not active                                               
QPainter::setBrush: Painter not active                                             
QPainter::drawRects: Painter not active                                            
QPainter::hasClipping: Painter not active                                          
QPainter::setPen: Painter not active                                               
QPainter::setBrush: Painter not active                                             
QPainter::drawRects: Painter not active                                            
QPainter::hasClipping: Painter not active                                          
QPainter::setPen: Painter not active                                               
QPainter::setBrush: Painter not active                                             
QPainter::drawRects: Painter not active                                            
QPainter::hasClipping: Painter not active                                          
QPainter::setPen: Painter not active                                               
QPainter::setBrush: Painter not active                                             
QPainter::drawRects: Painter not active                                            
QPainter::hasClipping: Painter not active                                          
QPainter::setPen: Painter not active                                               
QPainter::setBrush: Painter not active                                             
QPainter::drawRects: Painter not active                                            
QPainter::begin: Widget painting can only begin as a result of a paintEvent        
QPainter::translate: Painter not active                                            
QPainter::setClipRect: Painter not active                                          
QPainter::hasClipping: Painter not active                                          
QPainter::setPen: Painter not active                                               
QPainter::setBrush: Painter not active                                             
QPainter::drawRects: Painter not active                                            
QPainter::hasClipping: Painter not active                                          
QPainter::setPen: Painter not active                                               
QPainter::setBrush: Painter not active                                             
QPainter::drawRects: Painter not active                                            
QPainter::hasClipping: Painter not active                                          
QPainter::setPen: Painter not active                                               
QPainter::setBrush: Painter not active                                             
QPainter::drawRects: Painter not active                                            
QPainter::hasClipping: Painter not active                                          
QPainter::setPen: Painter not active                                               
QPainter::setBrush: Painter not active                                             
QPainter::drawRects: Painter not active                                            
QPainter::hasClipping: Painter not active                                          
QPainter::setPen: Painter not active                                               
QPainter::setBrush: Painter not active                                             
QPainter::drawRects: Painter not active                                            
QPainter::hasClipping: Painter not active                                          
QPainter::setPen: Painter not active                                               
QPainter::setBrush: Painter not active                                             
QPainter::drawRects: Painter not active                                            
QPainter::hasClipping: Painter not active                                          
QPainter::setPen: Painter not active                                               
QPainter::setBrush: Painter not active                                             
QPainter::drawRects: Painter not active                                            
QPainter::hasClipping: Painter not active                                          
QPainter::setPen: Painter not active                                               
QPainter::setBrush: Painter not active                                             
QPainter::drawRects: Painter not active                                            
QPainter::worldTransform: Painter not active                                       
QPainter::viewTransformEnabled: Painter not active                                 
QPainter::worldMatrixEnabled: Painter not active                                   
QPainter::window: Painter not active                                               
QPainter::viewport: Painter not active                                             
QPainter::clipRegion: Painter not active                                           
QPainter::opacity: Painter not active                                              
QPainter::pen: Painter not active                                                  
QPainter::brush: Painter not active                                                
QPainter::end: Painter not active, aborted                                         
QPainter::begin: Widget painting can only begin as a result of a paintEvent        
QPainter::setWorldTransform: Painter not active                                    
QPainter::setWindow: Painter not active                                            
QPainter::setViewport: Painter not active                                          
QPainter::setViewTransformEnabled: Painter not active                              
QPainter::setMatrixEnabled: Painter not active                                     
QPainter::setPen: Painter not active                                               
QPainter::setBrush: Painter not active                                             
QPainter::begin: Widget painting can only begin as a result of a paintEvent        
QPainter::translate: Painter not active                                            
QPainter::setClipRect: Painter not active                                          
QPainter::hasClipping: Painter not active                                          
QPainter::setPen: Painter not active                                               
QPainter::setBrush: Painter not active                                             
QPainter::drawRects: Painter not active                                            
QPainter::hasClipping: Painter not active                                          
QPainter::setPen: Painter not active                                               
QPainter::setBrush: Painter not active                                             
QPainter::drawRects: Painter not active                                            
QPainter::hasClipping: Painter not active                                          
QPainter::setPen: Painter not active                                               
QPainter::setBrush: Painter not active                                             
QPainter::drawRects: Painter not active                                            
QPainter::hasClipping: Painter not active                                          
QPainter::setPen: Painter not active                                               
QPainter::setBrush: Painter not active                                             
QPainter::drawRects: Painter not active                                            
QPainter::hasClipping: Painter not active                                          
QPainter::setPen: Painter not active                                               
QPainter::setBrush: Painter not active                                             
QPainter::drawRects: Painter not active                                            
QPainter::hasClipping: Painter not active                                          
QPainter::setPen: Painter not active                                               
QPainter::setBrush: Painter not active                                             
QPainter::drawRects: Painter not active                                            
QPainter::hasClipping: Painter not active                                          
QPainter::setPen: Painter not active                                               
QPainter::setBrush: Painter not active                                             
QPainter::drawRects: Painter not active                                            
QPainter::hasClipping: Painter not active                                          
QPainter::setPen: Painter not active                                               
QPainter::setBrush: Painter not active                                             
QPainter::drawRects: Painter not active                                            
QPainter::worldTransform: Painter not active                                       
QPainter::viewTransformEnabled: Painter not active                                 
QPainter::worldMatrixEnabled: Painter not active                                   
QPainter::window: Painter not active                                               
QPainter::viewport: Painter not active                                             
QPainter::clipRegion: Painter not active                                           
QPainter::opacity: Painter not active                                              
QPainter::pen: Painter not active                                                  
QPainter::brush: Painter not active                                                
QPainter::end: Painter not active, aborted                                         
QPainter::begin: Widget painting can only begin as a result of a paintEvent        
QPainter::setWorldTransform: Painter not active                                    
QPainter::setWindow: Painter not active                                            
QPainter::setViewport: Painter not active                                          
QPainter::setViewTransformEnabled: Painter not active                              
QPainter::setMatrixEnabled: Painter not active                                     
QPainter::setPen: Painter not active                                               
QPainter::setBrush: Painter not active                                             
QPainter::begin: Widget painting can only begin as a result of a paintEvent        
QPainter::translate: Painter not active                                            
QPainter::setClipRect: Painter not active                                          
QPainter::hasClipping: Painter not active                                          
QPainter::setPen: Painter not active                                               
QPainter::setBrush: Painter not active                                             
QPainter::drawRects: Painter not active
and ... repetitvely (sorry for length, I don't know if everything is here)
Comment 1 Tommi Tervo 2010-02-11 19:50:51 UTC
One fix is already in khtml trunk, see
http://lists.kde.org/?l=kde-commits&m=126572002623175&w=2
Comment 2 Germain Garand 2010-02-12 15:59:07 UTC
*** Bug 226535 has been marked as a duplicate of this bug. ***
Comment 3 Germain Garand 2010-02-12 16:07:16 UTC
@Tommi: no, while the performance fix is nice, it is unrelated with the real problem.

I had a hard time investigating that, because it stems from a problem that only exists in Release builds (!!!)

The matter is that QWidget::scroll that we use to manage our efficient scrolling, does not invalidate the screeen in the same way depending if this is a debug build (where it works just fine) or a release build (where it just repaint everything allways!).

Arguably, this is partly our fault as well, since there is a note at QWidget::scroll documentation saying that it is only meant to be used on widgets with WA_OpaquePaintEvent attribute set, but still this is a horrible difference of behaviour.
Comment 4 Germain Garand 2010-02-12 16:39:06 UTC
SVN commit 1089159 by ggarand:

Critical performance fix:

There is a huge difference of behaviour between DEBUG and RELEASE
builds of Qt 4.6, that breaks scrolling in KHTML.

Using QWidget::scroll() on a widget that doesn't have WA_OpaquePaintEvent
attribute set works just fine in Debug, but completely breaks down in
Release, causing the whole view to get repainted always.


CCMAIL: kde-packager@kde.org
BUG: 226265

 M  +6 -0      khtmlview.cpp  


WebSVN link: http://websvn.kde.org/?view=rev&revision=1089159
Comment 5 Tommi Tervo 2010-02-14 11:09:13 UTC
*** Bug 226665 has been marked as a duplicate of this bug. ***
Comment 6 Søren Holm 2010-02-14 21:49:07 UTC
I have issued a lauchpad-bug for ubuntu

https://bugs.launchpad.net/ubuntu/+source/kde4libs/+bug/521890