Loading wear_ui.cpp +4 −52 Original line number Diff line number Diff line Loading @@ -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() { Loading @@ -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) Loading wear_ui.h +2 −2 Original line number Diff line number Diff line Loading @@ -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: Loading @@ -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(); }; Loading Loading
wear_ui.cpp +4 −52 Original line number Diff line number Diff line Loading @@ -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() { Loading @@ -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) Loading
wear_ui.h +2 −2 Original line number Diff line number Diff line Loading @@ -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: Loading @@ -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(); }; Loading