void display_run(e_controller_type type, int axis[]) { int i; int d; char label[BUTTON_LENGTH]; char rate[COLS]; int tdiff; cpt++; #ifndef WIN32 gettimeofday(&t1, NULL); tdiff = (t1.tv_sec * 1000000 + t1.tv_usec) - (t0.tv_sec * 1000000 + t0.tv_usec); #else QueryPerformanceCounter(&t1); tdiff = (t1.QuadPart - t0.QuadPart) * 1000000 / freq.QuadPart; #endif if(tdiff > RATE_PERIOD) { cpt_total += cpt; sprintf(rate, _("Processing time: current=%dus average=%dus worst=%dus"), proc_time/cpt, proc_time_total/cpt_total, proc_time_worst); mvaddstr(LINES-2, 1, rate); clrtoeol(); sprintf(rate, _("Refresh rate: %3dHz "), cpt*1000000/RATE_PERIOD); mvaddstr(LINES-1, 1, rate); t0 = t1; cpt = 0; proc_time = 0; } d = 0; for(i=rel_axis_rstick_y+1; i<AXIS_MAX; ++i) { if(axis[i]) { snprintf(label, sizeof(label), "%8s: %4d", control_get_name(type, i), axis[i]); mvwaddstr(wbuttons, 1 + d, 1, label); d++; if(d == BUTTON_Y_L - 3) { break; } } } memset(label, ' ', sizeof(label)); label[sizeof(label)-1] = '\0'; for(i=d; i<last_button_nb; ++i) { mvwaddstr(wbuttons, 1 + i, 1, label); } last_button_nb = d; wnoutrefresh(wbuttons); mvwaddch(lstick, cross[0][1], cross[0][0], ' '); cross[0][0] = STICK_X_L / 2 + (double)axis[rel_axis_lstick_x] / controller_get_max_signed(adapter_get(0)->type, rel_axis_lstick_x) * (STICK_X_L / 2 - 1); cross[0][1] = STICK_Y_L / 2 + (double)axis[rel_axis_lstick_y] / controller_get_max_signed(adapter_get(0)->type, rel_axis_lstick_y) * (STICK_Y_L / 2 - 1); if(cross[0][0] <= 0 || cross[0][0] >= STICK_X_L-1 || cross[0][1] <= 0 || cross[0][1] >= STICK_Y_L-1) { mvwaddch(lstick, cross[0][1], cross[0][0], CROSS_CHAR | COLOR_PAIR(3)); } else { mvwaddch(lstick, cross[0][1], cross[0][0], CROSS_CHAR); } wnoutrefresh(lstick); mvwaddch(rstick, cross[1][1], cross[1][0], ' '); cross[1][0] = STICK_X_L / 2 + (double)axis[rel_axis_rstick_x] / controller_get_max_signed(adapter_get(0)->type, rel_axis_rstick_x) * (STICK_X_L / 2 - 1); cross[1][1] = STICK_Y_L / 2 + (double)axis[rel_axis_rstick_y] / controller_get_max_signed(adapter_get(0)->type, rel_axis_rstick_y) * (STICK_Y_L / 2 - 1); if(cross[1][0] <= 0 || cross[1][0] >= STICK_X_L-1 || cross[1][1] <= 0 || cross[1][1] >= STICK_Y_L-1) { mvwaddch(rstick, cross[1][1], cross[1][0], CROSS_CHAR | COLOR_PAIR(3)); } else { mvwaddch(rstick, cross[1][1], cross[1][0], CROSS_CHAR); } wnoutrefresh(rstick); move(LINES-1, COLS-1); wnoutrefresh(stdscr); doupdate(); }
void display_run(e_controller_type type, int axis[]) { int i; int d; char label[BUTTON_LENGTH]; char rate[COLS]; int freq = stats_get_frequency(0); if(freq >= 0) { sprintf(rate, _("Refresh rate: %4dHz "), freq); mvaddstr(LINES-1, 1, rate); } d = 0; for(i=rel_axis_rstick_y+1; i<AXIS_MAX; ++i) { if(axis[i]) { snprintf(label, sizeof(label), "%8s: %4d", controller_get_axis_name(type, i), axis[i]); mvwaddstr(wbuttons, 1 + d, 1, label); d++; if(d == BUTTON_Y_L - 3) { break; } } } memset(label, ' ', sizeof(label)); label[sizeof(label)-1] = '\0'; for(i=d; i<last_button_nb; ++i) { mvwaddstr(wbuttons, 1 + i, 1, label); } last_button_nb = d; wnoutrefresh(wbuttons); mvwaddch(lstick, cross[0][1], cross[0][0], ' '); cross[0][0] = STICK_X_L / 2 + (double)axis[rel_axis_lstick_x] / controller_get_max_signed(adapter_get(0)->ctype, rel_axis_lstick_x) * (STICK_X_L / 2 - 1); cross[0][1] = STICK_Y_L / 2 + (double)axis[rel_axis_lstick_y] / controller_get_max_signed(adapter_get(0)->ctype, rel_axis_lstick_y) * (STICK_Y_L / 2 - 1); if(cross[0][0] <= 0 || cross[0][0] >= STICK_X_L-1 || cross[0][1] <= 0 || cross[0][1] >= STICK_Y_L-1) { mvwaddch(lstick, cross[0][1], cross[0][0], CROSS_CHAR | COLOR_PAIR(3)); } else { mvwaddch(lstick, cross[0][1], cross[0][0], CROSS_CHAR); } wnoutrefresh(lstick); mvwaddch(rstick, cross[1][1], cross[1][0], ' '); cross[1][0] = STICK_X_L / 2 + (double)axis[rel_axis_rstick_x] / controller_get_max_signed(adapter_get(0)->ctype, rel_axis_rstick_x) * (STICK_X_L / 2 - 1); cross[1][1] = STICK_Y_L / 2 + (double)axis[rel_axis_rstick_y] / controller_get_max_signed(adapter_get(0)->ctype, rel_axis_rstick_y) * (STICK_Y_L / 2 - 1); if(cross[1][0] <= 0 || cross[1][0] >= STICK_X_L-1 || cross[1][1] <= 0 || cross[1][1] >= STICK_Y_L-1) { mvwaddch(rstick, cross[1][1], cross[1][0], CROSS_CHAR | COLOR_PAIR(3)); } else { mvwaddch(rstick, cross[1][1], cross[1][0], CROSS_CHAR); } wnoutrefresh(rstick); move(LINES-1, COLS-1); wnoutrefresh(stdscr); doupdate(); }