static void nandroid_callback(const char* filename) { if (filename == NULL) return; const char* justfile = basename(filename); char tmp[PATH_MAX]; strcpy(tmp, justfile); if (tmp[strlen(tmp) - 1] == '\n') tmp[strlen(tmp) - 1] = '\0'; tmp[ui_get_text_cols() - 1] = '\0'; nandroid_files_count++; ui_increment_frame(); ui_nice_print("%s\n", tmp); if (!ui_was_niced() && nandroid_files_total != 0) ui_set_progress((float)nandroid_files_count / (float)nandroid_files_total); if (!ui_was_niced()) ui_delete_line(); }
// Draw the progress bar (if any) on the screen; does not flip pages // Should only be called with gUpdateMutex locked and if ui_has_initialized is true static void draw_progress_locked() { if (gCurrentIcon == BACKGROUND_ICON_INSTALLING) { // update the installation animation, if active if (ui_parameters.installing_frames > 0) ui_increment_frame(); draw_install_overlay_locked(gInstallingFrame); } if (gProgressBarType != PROGRESSBAR_TYPE_NONE) { int iconHeight = gr_get_height(gBackgroundIcon[BACKGROUND_ICON_INSTALLING]); int width = gr_get_width(gProgressBarEmpty); int height = gr_get_height(gProgressBarEmpty); int dx = (gr_fb_width() - width)/2; int dy = (3*gr_fb_height() + iconHeight - 2*height)/4; // Erase behind the progress bar (in case this was a progress-only update) gr_color(0, 0, 0, 255); gr_fill(dx, dy, width, height); if (gProgressBarType == PROGRESSBAR_TYPE_NORMAL) { float progress = gProgressScopeStart + gProgress * gProgressScopeSize; int pos = (int) (progress * width); if (pos > 0) { gr_blit(gProgressBarFill, 0, 0, pos, height, dx, dy); } if (pos < width-1) { gr_blit(gProgressBarEmpty, pos, 0, width-pos, height, dx+pos, dy); } } if (gProgressBarType == PROGRESSBAR_TYPE_INDETERMINATE) { static int frame = 0; gr_blit(gProgressBarIndeterminate[frame], 0, 0, width, height, dx, dy); frame = (frame + 1) % ui_parameters.indeterminate_frames; } } gettimeofday(&lastprogupd, NULL); }