[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdebase/workspace/plasma/applets/tasks
From:       Aaron J. Seigo <aseigo () kde ! org>
Date:       2009-06-22 23:51:19
Message-ID: 1245714679.620234.3889.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 985505 by aseigo:

don't update geometry more than three times a second; prevents taking up more cpu \
than needed when taskbar is undergoing changes in size, particularly when it's made \
to resize constantly due to another widget BUG:186594


 M  +15 -5     abstracttaskitem.cpp  
 M  +2 -0      abstracttaskitem.h  


--- trunk/KDE/kdebase/workspace/plasma/applets/tasks/abstracttaskitem.cpp \
#985504:985505 @@ -68,6 +68,7 @@
       m_animId(0),
       m_alpha(1),
       m_backgroundPrefix("normal"),
+      m_updateGeometryTimerId(0),
       m_updateTimerId(0),
       m_hoverEffectTimerId(0),
       m_attentionTimerId(0),
@@ -363,7 +364,11 @@
 
 void AbstractTaskItem::timerEvent(QTimerEvent *event)
 {
-    if (event->timerId() == m_updateTimerId) {
+    if (event->timerId() == m_updateGeometryTimerId) {
+        killTimer(m_updateGeometryTimerId);
+        m_updateGeometryTimerId = 0;
+        publishIconGeometry();
+    } else if (event->timerId() == m_updateTimerId) {
         killTimer(m_updateTimerId);
         m_updateTimerId = 0;
         update();
@@ -383,6 +388,9 @@
 
         update();
     } else if (event->timerId() == m_hoverEffectTimerId) {
+        killTimer(m_hoverEffectTimerId);
+        m_hoverEffectTimerId = 0;
+
 #ifdef Q_WS_X11
         QList<WId> windows;
 
@@ -444,9 +452,6 @@
                             reinterpret_cast<unsigned char *>(data.data()), \
data.size());  }
 #endif
-
-        killTimer(m_hoverEffectTimerId);
-        m_hoverEffectTimerId = 0;
     } else {
         QGraphicsWidget::timerEvent(event);
     }
@@ -839,7 +844,12 @@
 void AbstractTaskItem::setGeometry(const QRectF& geometry)
 {
     QGraphicsWidget::setGeometry(geometry);
-    publishIconGeometry();
+    if (m_lastGeometryUpdate.elapsed() < 350) {
+        m_updateGeometryTimerId = startTimer(350 - m_lastGeometryUpdate.elapsed());
+    } else {
+        publishIconGeometry();
+        m_lastGeometryUpdate.restart();
+    }
 }
 
 QRectF AbstractTaskItem::iconRect(const QRectF &b) const
--- trunk/KDE/kdebase/workspace/plasma/applets/tasks/abstracttaskitem.h \
#985504:985505 @@ -224,7 +224,9 @@
     QRectF m_activeRect;
 
     QPointF _dragOffset;
+    QTime m_lastGeometryUpdate;
     QTime m_lastUpdate;
+    int m_updateGeometryTimerId;
     int m_updateTimerId;
     int m_hoverEffectTimerId;
     int m_attentionTimerId;


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic