SHORT show_os_screen(void) { screen_swap(); getkey(); /* wait for a keypress */ screen_swap(); // window_redraw_all(); // screen_swap needs this }
void screen_vsync(void) { int64_t current_ticks = 0; int64_t remaining = 0; TRACE("Vsync"); if(ppmoutput) { screen_build_ppm(); } if(vsync_delay) { current_ticks = usec_count(); remaining = current_ticks - last_vsync_ticks; while(remaining < 20000) { current_ticks = usec_count(); remaining = current_ticks - last_vsync_ticks; } last_vsync_ticks = current_ticks; } screen_swap(SCREEN_NORMAL); framecnt++; if((framecnt&0x3f) == 0) { current_ticks = usec_count(); usecs_per_framecnt_interval = current_ticks - last_framecnt_usec; last_framecnt_usec = current_ticks; } rasterpos = rgbimage; next_line = rgbimage + screen->pitch; }
void retrace_frames(void) { bool run = true; bool pause = false; while (run) { bool render = !pause; SDL_Event event; while (SDL_PollEvent(&event)) { switch (event.type) { case SDL_KEYDOWN: switch (event.key.keysym.sym) { // toggle fullscreen mode case SDLK_RETURN: { if (SDL_GetModState() & KMOD_ALT) { core_toggle_fullscreen(); break; } } // toggle pause mode case SDLK_PAUSE: render = pause = !pause; break; // render one frame while paused case SDLK_SPACE: if (pause) { render = true; } break; } break; case SDL_QUIT: run = false; break; } } if (render) { uint64_t cmds_per_frame; if (!retrace_frame(&cmds_per_frame)) { run = false; } } else { screen_swap(); } } }
int debug_event_parse(SDL_Event ev) { switch(ev.type) { case SDL_WINDOWEVENT: if(ev.window.windowID == debug_window_id) { screen_swap(DEBUG_NORMAL); display_swap_screen(); } break; case SDL_TEXTINPUT: case SDL_KEYDOWN: if(debug_dispatch_keys(ev)) { SDL_Quit(); return 1; } break; case SDL_QUIT: SDL_Quit(); return 1; } return 0; }
void screen_cmd(struct mpdclient *c, command_t cmd) { #ifndef NCMPC_MINI if (screen.welcome_source_id != 0) { g_source_remove(screen.welcome_source_id); screen.welcome_source_id = 0; } #endif if (mode_fn->cmd != NULL && mode_fn->cmd(c, cmd)) return; if (handle_player_command(c, cmd)) return; switch(cmd) { case CMD_TOGGLE_FIND_WRAP: options.find_wrap = !options.find_wrap; screen_status_printf(options.find_wrap ? _("Find mode: Wrapped") : _("Find mode: Normal")); break; case CMD_TOGGLE_AUTOCENTER: options.auto_center = !options.auto_center; screen_status_printf(options.auto_center ? _("Auto center mode: On") : _("Auto center mode: Off")); break; case CMD_SCREEN_UPDATE: screen_paint(c); break; case CMD_SCREEN_PREVIOUS: screen_next_mode(c, -1); break; case CMD_SCREEN_NEXT: screen_next_mode(c, 1); break; case CMD_SCREEN_PLAY: screen_switch(&screen_queue, c); break; case CMD_SCREEN_FILE: screen_switch(&screen_browse, c); break; #ifdef ENABLE_HELP_SCREEN case CMD_SCREEN_HELP: screen_switch(&screen_help, c); break; #endif #ifdef ENABLE_SEARCH_SCREEN case CMD_SCREEN_SEARCH: screen_switch(&screen_search, c); break; #endif #ifdef ENABLE_ARTIST_SCREEN case CMD_SCREEN_ARTIST: screen_switch(&screen_artist, c); break; #endif #ifdef ENABLE_GENRE_SCREEN case CMD_SCREEN_GENRE: screen_switch(&screen_genre, c); break; #endif #ifdef ENABLE_SONG_SCREEN case CMD_SCREEN_SONG: screen_switch(&screen_song, c); break; #endif #ifdef ENABLE_KEYDEF_SCREEN case CMD_SCREEN_KEYDEF: screen_switch(&screen_keydef, c); break; #endif #ifdef ENABLE_LYRICS_SCREEN case CMD_SCREEN_LYRICS: screen_switch(&screen_lyrics, c); break; #endif #ifdef ENABLE_OUTPUTS_SCREEN case CMD_SCREEN_OUTPUTS: screen_switch(&screen_outputs, c); break; #endif case CMD_SCREEN_SWAP: screen_swap(c, NULL); break; default: break; } }
static int debug_do_key_normal(SDL_KeyboardEvent key) { SDL_Keysym k; int ret; k = key.keysym; win_set_message(""); switch(k.sym) { case SDLK_ESCAPE: win[2].addr = cpu->pc; break; case SDLK_TAB: win_cycle_selected(); break; case SDLK_PRINTSCREEN: // TODO: toggle this state. diag_set_module_levels("CPU0:6"); break; case SDLK_UP: win_move_window(MOVE_UP, k.mod&KMOD_SHIFT); break; case SDLK_DOWN: win_move_window(MOVE_DOWN, k.mod&KMOD_SHIFT); break; case SDLK_LEFT: win_move_window(MOVE_LEFT, k.mod&KMOD_SHIFT); break; case SDLK_RIGHT: win_move_window(MOVE_RIGHT, k.mod&KMOD_SHIFT); break; case SDLK_d: if(debugmode) debugmode = 0; else debugmode = 1; break; case SDLK_t: if(k.mod & KMOD_ALT) win_toggle_window_type(WIN_CURRENT); break; case SDLK_f: if(k.mod & KMOD_ALT) win_toggle_window_font(WIN_CURRENT); break; case SDLK_s: if(k.mod & KMOD_ALT) win_toggle_window_split(WIN_CURRENT); if(k.mod & KMOD_CTRL) debug_skip_next_instr(); break; case SDLK_y: if(k.mod & KMOD_ALT) win_toggle_window_full(WIN_CURRENT); break; case SDLK_z: if(k.mod & KMOD_CTRL) { if((win_get_selected() != 2) && (win_get_selected() != 4)) win_set_selected(2); ret = stepfn(CPU_TRACE_SINGLE); if(debugmode) { cpu_print_status(CPU_USE_CURRENT_PC); mfp_print_status(); } if(ret == CPU_BREAKPOINT) { win_set_message("Breakpoint"); } else if(ret == CPU_WATCHPOINT) { win_set_message("Watchpoint"); } else { win_set_message("Trace"); } win_move_window_to_pc(); } break; case SDLK_a: if(k.mod & KMOD_CTRL) { debug_breakpoint_next_instr(); if((win_get_selected() != 2) && (win_get_selected() != 4)) win_set_selected(2); debug_update_win = 0; ret = runfn(CPU_DEBUG_RUN); debug_update_win = 1; if(ret == CPU_BREAKPOINT) { win_set_message("Breakpoint"); } else if(ret == CPU_WATCHPOINT) { win_set_message("Watchpoint"); } win_move_window_to_pc(); } break; case SDLK_r: if(k.mod & KMOD_CTRL) { if((win_get_selected() != 2) && (win_get_selected() != 4)) win_set_selected(2); debug_update_win = 0; ret = runfn(CPU_DEBUG_RUN); debug_update_win = 1; if(ret == CPU_BREAKPOINT) { win_set_message("Breakpoint"); } else if(ret == CPU_WATCHPOINT) { win_set_message("Watchpoint"); } else { printf("DEBUG: Run Return %d\n", ret); } win_move_window_to_pc(); } else if(k.mod & KMOD_ALT) { win_set_exwin(EDIT_SETREG); debug_set_editmode(); } break; case SDLK_m: if(k.mod & KMOD_ALT) { win_set_exwin(EDIT_SETMEM); debug_set_editmode(); } else { if(win_get_selected() > 1) { win_set_exwin(EDIT_SETADDR); debug_set_editmode(); } } break; case SDLK_v: if(viewmode == VIEW_DISPLAY) viewmode = VIEW_DEBUG; else viewmode = VIEW_DISPLAY; break; case SDLK_l: if(k.mod & KMOD_SHIFT) { win_set_exwin(EDIT_LABELCMD); } else { win_set_exwin(EDIT_LABEL); } debug_set_editmode(); break; case SDLK_b: if(k.mod & KMOD_ALT) { win_set_exwin(EDIT_SETBRK); debug_set_editmode(); } else if(k.mod & KMOD_CTRL) { if(win[win_get_selected()].type == TYPE_DIS) debug_toggle_breakpoint(win_get_selected()); } else { cpu_print_breakpoints(); } break; case SDLK_w: if(k.mod & KMOD_ALT) { win_set_exwin(EDIT_SETWATCH); debug_set_editmode(); } break; case SDLK_c: if(k.mod & KMOD_CTRL) return 1; screen_clear(); break; case SDLK_F12: printf("-------------------------------------------\n"); cpu_print_status(CPU_USE_CURRENT_PC); printf("- - - - - - - - - - - - - - - - - - - - - -\n"); mfp_print_status(); printf("- - - - - - - - - - - - - - - - - - - - - -\n"); ikbd_print_status(); printf("-------------------------------------------\n"); default: break; } screen_swap(DEBUG_INDICATE_RASTERPOS); display_swap_screen(); return 0; }