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 2ca9d9c4f9
commit 2de98df48f
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)