Branch: master

5b34ad0d 2014-09-16 13:10:51 Slávek Banko
Improve TQProgressBar repaint optimization
M src/widgets/qprogressbar.cpp
M src/widgets/qprogressbar.h
diff --git a/src/widgets/qprogressbar.cpp b/src/widgets/qprogressbar.cpp
index 1219419..98d35a8 100644
--- a/src/widgets/qprogressbar.cpp
+++ b/src/widgets/qprogressbar.cpp
@@ -212,13 +212,11 @@
 	 progress < 0 || ( ( progress > total_steps ) && total_steps ) )
 	return;
 
-    const bool needRepaint = isVisible() && requireRepaint( progress );
-
     progress_val = progress;
 
     setIndicator( progress_str, progress_val, total_steps );
 
-    if ( needRepaint ) {
+    if ( isVisible() && repaintRequired() ) {
         repaint( FALSE );
         d->last_painted_progress = progress;
     }
@@ -358,10 +356,9 @@
     would require a repaint of the progress bar. This allows efficient
     repainting.
 */
-bool QProgressBar::requireRepaint( int newProgress ) const
+bool QProgressBar::repaintRequired() const
 {
-    if ( newProgress == progress_val ||
-         newProgress == d->last_painted_progress ) {
+    if ( progress_val == d->last_painted_progress ) {
         return false;
     }
 
@@ -375,7 +372,7 @@
         progressPerPixel = float( total_steps ) / float( width );
     }
 
-    const int delta = d->last_painted_progress - newProgress;
+    const int delta = d->last_painted_progress - progress_val;
     return QABS( delta ) >= progressPerPixel;
 }
 
diff --git a/src/widgets/qprogressbar.h b/src/widgets/qprogressbar.h
index 3ba2388..336ade5 100644
--- a/src/widgets/qprogressbar.h
+++ b/src/widgets/qprogressbar.h
@@ -96,7 +96,7 @@
     virtual bool setIndicator( QString & progress_str, int progress,
 			       int totalSteps );
     void styleChange( QStyle& );
-    bool	requireRepaint( int newProgress ) const;
+    bool	repaintRequired() const;
 
 private:
     int		total_steps;