From 69f4b6732ce13f248b0da0c7eeda56207fdeaba2 Mon Sep 17 00:00:00 2001 From: Doug Zongker Date: Thu, 26 Apr 2012 14:37:53 -0700 Subject: fix timed progress bars in recovery They're completely broken and have been for months because this code makes no sense. Change-Id: Ibabcd3dbe5a004a45b341e4a5215aa3df77e1861 --- screen_ui.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/screen_ui.cpp b/screen_ui.cpp index 2a8652ecf..3c6c3ae25 100644 --- a/screen_ui.cpp +++ b/screen_ui.cpp @@ -122,6 +122,8 @@ void ScreenRecoveryUI::draw_background_locked(Icon icon) // Should only be called with updateMutex locked. void ScreenRecoveryUI::draw_progress_locked() { + if (currentIcon == ERROR) return; + if (currentIcon == INSTALLING) { draw_install_overlay_locked(installingFrame); } @@ -255,10 +257,10 @@ void ScreenRecoveryUI::progress_loop() { int duration = progressScopeDuration; if (progressBarType == DETERMINATE && duration > 0) { double elapsed = now() - progressScopeTime; - float progress = 1.0 * elapsed / duration; - if (progress > 1.0) progress = 1.0; - if (progress > progress) { - progress = progress; + float p = 1.0 * elapsed / duration; + if (p > 1.0) p = 1.0; + if (p > progress) { + progress = p; redraw = 1; } } @@ -351,6 +353,8 @@ void ScreenRecoveryUI::SetProgressType(ProgressType type) progressBarType = type; update_progress_locked(); } + progressScopeStart = 0; + progress = 0; pthread_mutex_unlock(&updateMutex); } -- cgit v1.2.3