void muFrame::OnUpdatingProgress(UpdaterEvent& event) { if( event.GetExtraLong() > 0.0f ) m_updatingProgress = wxDouble(event.GetInt()) / wxDouble(event.GetExtraLong()); else m_updatingProgress = 0.0f; DisplayUpdatingProgress(); if( !event.GetString().IsEmpty() ) wxLogVerbose(wxT("[Updater] %s"), event.GetString().c_str()); if( m_updatingProgress > 0 ) { double dlnow = event.GetInt(); double dltotal = event.GetExtraLong(); static wxStopWatch eventWatch; static double lastdl = 0; double dldelta = dlnow - lastdl; dldelta /= 1024.0f; lastdl = dlnow; eventWatch.Pause(); double speed = 0; if( eventWatch.Time() > 0.0f ) speed = dldelta / eventWatch.Time(); eventWatch.Start(); static double speedAvg = 0.0f; if( speed >= 0.0f ) speedAvg = (speedAvg*0.95f + speed*0.05f); wxString remainingText = wxT("?"); if( speedAvg > 0 ) { double secondsRemaining = (dltotal-dlnow) / 1024.0f / (speedAvg * 1000.0f); wxTimeSpan span = wxTimeSpan::Seconds(secondsRemaining); remainingText = span.Format(); } // update label every second only static wxStopWatch limitWatch; limitWatch.Pause(); if( limitWatch.Time() > 1000 ) { m_detailsLabel->SetLabel(wxString::Format( wxT("Downloading Gunreal v%i... %s remaining (%03.1lf MB at %0.0lf KB/s)") , m_latestVersion , remainingText.c_str() , dltotal / 1024.0f / 1024.0f , speedAvg * 1000.0f )); limitWatch.Start(); } else limitWatch.Resume(); } }
void muFrame::OnUpdatingProgress(UpdaterEvent& event) { if( event.GetExtraLong() > 0.0f ) m_updatingProgress = wxDouble(event.GetInt()) / wxDouble(event.GetExtraLong()); else m_updatingProgress = 0.0f; DisplayUpdatingProgress(); if( !event.GetString().IsEmpty() ) wxLogVerbose(event.GetString()); if( m_updatingProgress > 0 ) { double dlnow = event.GetInt(); //double dltotal = event.GetExtraLong(); static wxStopWatch eventWatch; static double lastdl = 0; double dldelta = dlnow - lastdl; dldelta /= 1024; lastdl = dlnow; eventWatch.Pause(); double speed = 0; if( eventWatch.Time() > 0.0f ) speed = dldelta / eventWatch.Time() * 1000.0f; eventWatch.Start(); static double speedAvg = 0.0f; if( speed >= 0.0f ) speedAvg = (speedAvg*0.95f + speed*0.05f); // update label every second only static wxStopWatch limitWatch; limitWatch.Pause(); if( limitWatch.Time() > 1000 ) { m_detailsLabel->SetLabel(wxString::Format( wxT("Downloading Gunreal v%i - %0.1lf%% at %0.0lfKb/s...") , m_latestVersion, m_updatingProgress*100.0f, speedAvg)); limitWatch.Start(); } else limitWatch.Resume(); } }