CProgressWindow: try to reduce effort inside progress display

Should help to reduce some timing side effects with many data amounts.
But there could still be more potential.


Origin commit data
------------------
Commit: 2de98df48f
Author: Thilo Graf <dbt@novatux.de>
Date: 2017-03-19 (Sun, 19 Mar 2017)

Origin message was:
------------------
CProgressWindow: try to reduce effort inside progress display

Should help to reduce some timing side effects with many data amounts.
But there could still be more potential.
This commit is contained in:
2017-03-19 22:30:26 +01:00
parent bed9f96a65
commit 5cb6543173
2 changed files with 15 additions and 5 deletions

View File

@@ -79,7 +79,7 @@ void CProgressWindow::Init( signal<void, size_t, size_t, string> *statusSignal,
if (globalSignal)
*globalSignal->connect(mem_fun(*this, &CProgressWindow::showGlobalStatus));
global_progress = local_progress = 0;
global_progress = local_progress = percent_progress = 0;
showFooter(false);
@@ -91,6 +91,8 @@ void CProgressWindow::Init( signal<void, size_t, size_t, string> *statusSignal,
status_txt->doPaintBg(false);
addWindowItem(status_txt);
cur_statusText = string();
//create local_bar object
local_bar = getProgressItem();
@@ -128,10 +130,16 @@ CProgressBar* CProgressWindow::getProgressItem()
void CProgressWindow::initStatus(const unsigned int prog, const unsigned int max, const string &statusText, CProgressBar *pBar)
{
pBar->allowPaint(true);
pBar->setValues(prog, (int)max);
if (!statusText.empty())
showStatusMessageUTF(statusText);
pBar->paint(false);
unsigned int cur_perc = prog*100/(max+1);
if (percent_progress != cur_perc || prog == 0){
pBar->setValues(prog, (int)max);
if (!statusText.empty() && (cur_statusText != statusText)){
showStatusMessageUTF(statusText);
cur_statusText = statusText;
}
pBar->paint(false);
percent_progress = cur_perc;
}
}
void CProgressWindow::showStatus(const unsigned int prog, const unsigned int max, const string &statusText)

View File

@@ -39,6 +39,8 @@ class CProgressWindow : public CComponentsWindow, public CMenuTarget
unsigned int global_progress;
unsigned int local_progress;
unsigned int percent_progress;
std::string cur_statusText;
int h_height;
void Init( sigc::signal<void, size_t, size_t, std::string> *statusSignal,
sigc::signal<void,size_t, size_t, std::string> *localSignal,