fix timed progress bars in recovery

They're completely broken and have been for months because this code
makes no sense.

Change-Id: Ibabcd3dbe5a004a45b341e4a5215aa3df77e1861
diff --git a/screen_ui.cpp b/screen_ui.cpp
index 2a8652e..3c6c3ae 100644
--- a/screen_ui.cpp
+++ b/screen_ui.cpp
@@ -122,6 +122,8 @@
 // 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 @@
         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 @@
         progressBarType = type;
         update_progress_locked();
     }
+    progressScopeStart = 0;
+    progress = 0;
     pthread_mutex_unlock(&updateMutex);
 }