static int void_score_compare_crtc(const void* _a, const void* _b) { int r; const adv_crtc* a = *(const adv_crtc**)_a; const adv_crtc* b = *(const adv_crtc**)_b; r = score_compare_crtc(the_context, a, b); if (r < 0) log_std(("emu:video: compare %s/%s, first is better\n", crtc_name_get(a), crtc_name_get(b))); else if (r > 0) log_std(("emu:video: compare %s/%s, second is better\n", crtc_name_get(a), crtc_name_get(b))); else log_std(("emu:video: compare %s/%s, equal\n", crtc_name_get(a), crtc_name_get(b))); return r; }
static int video_mode_menu(struct advance_video_context* context, struct advance_ui_context* ui_context, int selected, unsigned input) { struct ui_menu menu; unsigned mac; int exit_index; int auto_index; unsigned i; const adv_crtc* crtc; if (selected >= 1) selected = selected - 1; else selected = 0; advance_ui_menu_init(&menu); advance_ui_menu_title_insert(&menu, "Video Mode"); auto_index = advance_ui_menu_text_insert(&menu, "Auto"); crtc = 0; for (i = 0; i < context->state.crtc_mac; ++i) { char buffer[128]; mode_desc_print(context, buffer, sizeof(buffer), context->state.crtc_map[i]); if (advance_ui_menu_text_insert(&menu, buffer) == selected) crtc = context->state.crtc_map[i]; } exit_index = advance_ui_menu_text_insert(&menu, "Return to Main Menu"); mac = advance_ui_menu_done(&menu, ui_context, selected); if (input == OSD_INPUT_DOWN) { selected = (selected + 1) % mac; } if (input == OSD_INPUT_UP) { selected = (selected + mac - 1) % mac; } if (input == OSD_INPUT_SELECT) { if (selected == exit_index) { selected = -1; } else if (selected == auto_index) { struct advance_video_config_context config = context->config; sncpy(config.resolution_buffer, sizeof(config.resolution_buffer), "auto"); advance_video_reconfigure(context, &config); /* show at screen the new configuration name */ advance_ui_message(ui_context, "%s", mode_current_name(context)); } else { struct advance_video_config_context config = context->config; sncpy(config.resolution_buffer, sizeof(config.resolution_buffer), crtc_name_get(crtc)); advance_video_reconfigure(context, &config); } } if (input == OSD_INPUT_CANCEL) selected = -1; if (input == OSD_INPUT_CONFIGURE) selected = -2; return selected + 1; }
const char* mode_current_name(const struct advance_video_context* context) { return crtc_name_get(context->state.crtc_selected); }