Remove duplicate thread loop

Fixes animation running at 2x speed

Change-Id: Ieec353097b6eee1cf40530e6f4f1e69927d2bc98
This commit is contained in:
Damien Bargiacchi 2016-09-09 08:18:06 -07:00
parent 43d186021a
commit ad8b5a6c11
2 changed files with 6 additions and 54 deletions

View file

@ -184,55 +184,10 @@ void WearRecoveryUI::draw_screen_locked()
}
}
// Keeps the progress bar updated, even when the process is otherwise busy.
void* WearRecoveryUI::progress_thread(void *cookie) {
self->progress_loop();
return NULL;
}
void WearRecoveryUI::progress_loop() {
double interval = 1.0 / animation_fps;
for (;;) {
double start = now();
pthread_mutex_lock(&updateMutex);
bool redraw = false;
if ((currentIcon == INSTALLING_UPDATE || currentIcon == ERASING)
&& !show_text) {
if (!intro_done) {
if (current_frame >= intro_frames - 1) {
intro_done = true;
current_frame = 0;
} else {
current_frame++;
}
} else {
current_frame = (current_frame + 1) % loop_frames;
}
redraw = true;
}
// move the progress bar forward on timed intervals, if configured
int duration = progressScopeDuration;
if (progressBarType == DETERMINATE && duration > 0) {
double elapsed = now() - progressScopeTime;
float p = 1.0 * elapsed / duration;
if (p > 1.0) p = 1.0;
if (p > progress) {
progress = p;
redraw = true;
}
}
if (redraw) update_screen_locked();
pthread_mutex_unlock(&updateMutex);
double end = now();
// minimum of 20ms delay between frames
double delay = interval - (end-start);
if (delay < 0.02) delay = 0.02;
usleep((long)(delay * 1000000));
}
// TODO merge drawing routines with screen_ui
void WearRecoveryUI::update_progress_locked() {
draw_screen_locked();
gr_flip();
}
void WearRecoveryUI::InitTextParams() {
@ -253,9 +208,6 @@ void WearRecoveryUI::Init() {
backgroundIcon[ERASING] = backgroundIcon[INSTALLING_UPDATE];
LoadBitmap("icon_error", &backgroundIcon[ERROR]);
backgroundIcon[NO_COMMAND] = backgroundIcon[ERROR];
pthread_create(&progress_t, NULL, progress_thread, NULL);
}
void WearRecoveryUI::SetStage(int current, int max)

View file

@ -54,6 +54,8 @@ class WearRecoveryUI : public ScreenRecoveryUI {
void InitTextParams() override;
void update_progress_locked() override;
void PrintV(const char*, bool, va_list) override;
private:
@ -74,8 +76,6 @@ class WearRecoveryUI : public ScreenRecoveryUI {
void draw_screen_locked() override;
void draw_progress_locked();
static void* progress_thread(void* cookie);
void progress_loop();
void PutChar(char);
void ClearText();
};