From fa671f0185ed66cf45e168e79b4889bf12e61512 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sl=C3=A1vek=20Banko?= Date: Tue, 16 Sep 2014 20:10:51 +0200 Subject: [PATCH] Improve TQProgressBar repaint optimization (cherry picked from commit 5b34ad0d8e489369a0cd8bd1e1b3ccebc4c9acb7) --- src/widgets/qprogressbar.cpp | 11 ++++------- src/widgets/qprogressbar.h | 2 +- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/src/widgets/qprogressbar.cpp b/src/widgets/qprogressbar.cpp index 57bb332..fde1e95 100644 --- a/src/widgets/qprogressbar.cpp +++ b/src/widgets/qprogressbar.cpp @@ -209,13 +209,11 @@ void QProgressBar::setProgress( int progress ) 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; } @@ -349,10 +347,9 @@ void QProgressBar::styleChange( QStyle& old ) 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; } @@ -366,7 +363,7 @@ bool QProgressBar::requireRepaint( int newProgress ) const 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 69afd94..1e1ecde 100644 --- a/src/widgets/qprogressbar.h +++ b/src/widgets/qprogressbar.h @@ -95,7 +95,7 @@ protected: 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;