Bug 228807 - dancing thumbs in album view
Summary: dancing thumbs in album view
Status: RESOLVED FIXED
Alias: None
Product: digikam
Classification: Applications
Component: Thumbs-Image (show other bugs)
Version: 1.2.0
Platform: unspecified Linux
: NOR normal
Target Milestone: ---
Assignee: Digikam Developers
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-02-27 21:37 UTC by Bartek Pietrasiak
Modified: 2012-06-27 10:51 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed In: 1.2.0


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Bartek Pietrasiak 2010-02-27 21:37:31 UTC
Version:           1.2.0 (rev.: 1096684) (using 4.3.4 (KDE 4.3.4), 4.3.4-3.fc11 Fedora)
Compiler:          gcc
OS:                Linux (i686) release 2.6.30.10-105.fc11.i686.PAE

Try the following:
1. Have a proper number of pictures in album (about 10 in my case) so that the 3/4 part of the thumbbar will be filled with pictures.
2. Resize (height) the thumbbar so that the pictures will fill more than the whole part. At the moment when the thumbbar is filled 100% the thumbs start to dance nicely taking 100% of the CPU ;)

I have had a few times a situation, when I entered some album or switch to fullscreen and the thumbs started to dance ;)
Comment 2 Bartek Pietrasiak 2010-02-27 23:33:39 UTC
Yes, exactly :]
Comment 3 Marcel Wiesweg 2010-02-28 15:30:59 UTC
The cause is this loop (152 enters same method as 190):

#152 0x00007ffff2c20259 in executePostedLayout (this=<value optimized out>) at ../../src/gui/itemviews/qabstractitemview_p.h:212             
#153 rectForIndex (this=<value optimized out>) at ../../src/gui/itemviews/qlistview_p.h:344                                                  
#154 QListView::rectForIndex (this=<value optimized out>) at itemviews/qlistview.cpp:1226                                                    
#155 0x00007ffff2c2032e in QListView::visualRect (this=0x7fffff802a80, index=...) at itemviews/qlistview.cpp:561                             
#156 0x00007ffff5049ec3 in KCategorizedView::visualRect (this=0xd9f4b0, index=...)                                                           
    at /home/marcel/freshmeat/multimedia/kde4/src/extragear/graphics/digikam/libs/widgets/common/kcategorizedview.cpp:581                    
#157 0x000000000069b6fd in Digikam::ImageRatingOverlay::updatePosition (this=0xd5b550)                                                       
    at /home/marcel/freshmeat/multimedia/kde4/src/extragear/graphics/digikam/digikam/imageratingoverlay.cpp:99                               
#158 0x00007ffff503fe93 in Digikam::ImageDelegateOverlay::qt_metacall (this=0xd5b550, _c=InvokeMetaMethod, _id=<value optimized out>, _a=    
    0x7fffff80d100) at /home/marcel/freshmeat/multimedia/kde4/build/extragear/graphics/digikam/digikam/imagedelegateoverlay.moc:77           
#159 0x00007ffff503fec0 in Digikam::AbstractWidgetDelegateOverlay::qt_metacall (this=0x7fffff802a80, _c=2147483647, _id=0, _a=0x7fffff802a80)
    at /home/marcel/freshmeat/multimedia/kde4/build/extragear/graphics/digikam/digikam/imagedelegateoverlay.moc:146                          
#160 0x000000000069be50 in Digikam::ImageRatingOverlay::qt_metacall (this=0x7fffff802a80, _c=2147483647, _id=0, _a=0x7fffff802a80)           
    at /home/marcel/freshmeat/multimedia/kde4/build/extragear/graphics/digikam/digikam/imageratingoverlay.moc:74                             
#161 0x00007ffff181b78f in QMetaObject::activate (sender=0xda2f40, m=<value optimized out>, local_signal_index=<value optimized out>, argv=  
---Type <return> to continue, or q <return> to quit---                                                                                       
    0x7fffff802a80) at kernel/qobject.cpp:3293                                                                                               
#162 0x00007ffff5021885 in Digikam::DCategorizedView::updateDelegateSizes (this=0xd9f4b0)                                                    
    at /home/marcel/freshmeat/multimedia/kde4/src/extragear/graphics/digikam/libs/widgets/common/dcategorizedview.cpp:297                    
#163 0x00007ffff504e810 in KCategorizedView::resizeEvent (this=0x7fffff802a80, event=0x7fffffff)                                             
    at /home/marcel/freshmeat/multimedia/kde4/src/extragear/graphics/digikam/libs/widgets/common/kcategorizedview.cpp:920                    
#164 0x00007ffff2732d84 in QWidget::event (this=0xd9f4b0, event=0x7fffff80de80) at kernel/qwidget.cpp:8152                                   
#165 0x00007ffff2ad75b6 in QFrame::event (this=0xd9f4b0, e=0x7fffff80de80) at widgets/qframe.cpp:557                                         
#166 0x00007ffff2c06a6b in QAbstractItemView::viewportEvent (this=0xd9f4b0, event=0x7fffff80de80) at itemviews/qabstractitemview.cpp:1610    
#167 0x00007ffff502190f in Digikam::DCategorizedView::viewportEvent (this=0xd9f4b0, event=0x7fffff80de80)                                    
    at /home/marcel/freshmeat/multimedia/kde4/src/extragear/graphics/digikam/libs/widgets/common/dcategorizedview.cpp:704                    
#168 0x00007ffff1807d97 in QCoreApplicationPrivate::sendThroughObjectEventFilters (this=<value optimized out>, receiver=0xcfdf30, event=     
    0x7fffff80de80) at kernel/qcoreapplication.cpp:819                                                                                       
#169 0x00007ffff26dcdec in QApplicationPrivate::notify_helper (this=0xac9450, receiver=0xcfdf30, e=0x7fffff80de80)                           
    at kernel/qapplication.cpp:4296                                                                                                          
#170 0x00007ffff26e33fb in QApplication::notify (this=0x7fffffffcd70, receiver=0xcfdf30, e=0x7fffff80de80) at kernel/qapplication.cpp:4183   
#171 0x00007ffff35cb446 in KApplication::notify(QObject*, QEvent*) () from /usr/lib64/libkdeui.so.5                                          
#172 0x00007ffff180898c in QCoreApplication::notifyInternal (this=0x7fffffffcd70, receiver=0xcfdf30, event=0x7fffff80de80)                   
    at kernel/qcoreapplication.cpp:704                                                                                                       
#173 0x00007ffff277eed4 in sendEvent (event=<value optimized out>, receiver=<value optimized out>)                                           
    at ../../src/corelib/kernel/qcoreapplication.h:215                                                                                       
#174 QWidgetPrivate::setGeometry_sys (event=<value optimized out>, receiver=<value optimized out>) at kernel/qwidget_x11.cpp:2597            
#175 0x00007ffff273206d in QWidget::setGeometry (this=0xcfdf30, r=...) at kernel/qwidget.cpp:6635                                            
#176 0x00007ffff2b624e8 in QAbstractScrollAreaPrivate::layoutChildren (this=0x103a630) at widgets/qabstractscrollarea.cpp:478                
#177 0x00007ffff2b62c35 in QAbstractScrollArea::event (this=0xd9f4b0, e=0x7fffffff) at widgets/qabstractscrollarea.cpp:920                   
#178 0x00007ffff2bff70b in QAbstractItemView::event (this=0xd9f4b0, event=0x7fffff80e8b0) at itemviews/qabstractitemview.cpp:1546            
#179 0x00007ffff26dce1c in QApplicationPrivate::notify_helper (this=0xac9450, receiver=0xd9f4b0, e=0x7fffff80e8b0)                           
    at kernel/qapplication.cpp:4300                                                                                                          
#180 0x00007ffff26e33fb in QApplication::notify (this=0x7fffffffcd70, receiver=0xd9f4b0, e=0x7fffff80e8b0) at kernel/qapplication.cpp:4183   
#181 0x00007ffff35cb446 in KApplication::notify(QObject*, QEvent*) () from /usr/lib64/libkdeui.so.5                                          
#182 0x00007ffff180898c in QCoreApplication::notifyInternal (this=0x7fffffffcd70, receiver=0xd9f4b0, event=0x7fffff80e8b0)                   
    at kernel/qcoreapplication.cpp:704                                                                                                       
#183 0x00007ffff27370da in sendEvent (event=<value optimized out>, receiver=<value optimized out>)                                           
    at ../../src/corelib/kernel/qcoreapplication.h:215                                                                                       
#184 QWidget::setContentsMargins (event=<value optimized out>, receiver=<value optimized out>) at kernel/qwidget.cpp:6843                    
#185 0x00007ffff2b627c2 in QAbstractScrollAreaPrivate::layoutChildren (this=0x103a630) at widgets/qabstractscrollarea.cpp:401                
#186 0x00007ffff2c25a64 in QListView::updateGeometries (this=0xd9f4b0) at itemviews/qlistview.cpp:1491                                       
#187 0x00007ffff5021b69 in Digikam::DCategorizedView::updateGeometries (this=0x7fffff802a80)                                                 
    at /home/marcel/freshmeat/multimedia/kde4/src/extragear/graphics/digikam/libs/widgets/common/dcategorizedview.cpp:668                    
#188 0x00007ffff2bf7ea9 in QAbstractItemView::doItemsLayout (this=0xd9f4b0) at itemviews/qabstractitemview.cpp:1135                          
#189 0x00007ffff2c19798 in QListView::doItemsLayout (this=0xd9f4b0) at itemviews/qlistview.cpp:1466                                          
---Type <return> to continue, or q <return> to quit---                                                                                       
#190 0x00007ffff2c20259 in executePostedLayout (this=<value optimized out>) at ../../src/gui/itemviews/qabstractitemview_p.h:212
Comment 4 Johannes Wienke 2010-02-28 15:33:35 UTC
Will this code be removed or changed with porting the thumbbar to model view?
Comment 5 Marcel Wiesweg 2010-02-28 21:53:17 UTC
This is the thumbbar that is already ported ;-) It's the only one btw.
I am working on a solution, but it's not easy.
Comment 6 Marcel Wiesweg 2010-03-02 20:46:35 UTC
Ok I needed a long time to figure this out. But it's logical: The delegate resizes itself to fit into the viewport. Now the scroll bar was set to "AsNeeded". At the limit, the scrollbar is needed, delegate resizes itself (smaller), scrollbar can be hidden, delegate resizes again (larger), toolbar is needed again, etc.
Comment 7 Marcel Wiesweg 2010-03-02 20:50:05 UTC
SVN commit 1098076 by mwiesweg:

At the point when the scroll bar is switched on, the delegate will be resized,
getting smaller, the scroll bar is switched off, the delegate gets bigger,
scroll bar shown again...
In short, ScrollBarAsNeeded is not supported.

BUG: 228807

 M  +2 -1      NEWS  
 M  +0 -4      digikam/albumwidgetstack.cpp  
 M  +8 -1      digikam/imagethumbnailbar.cpp  


WebSVN link: http://websvn.kde.org/?view=rev&revision=1098076