Esempio n. 1
0
SHORT show_os_screen(void) 
{
   screen_swap();
   getkey();  /* wait for a keypress */
   screen_swap();
//   window_redraw_all();  // screen_swap needs this
}
Esempio n. 2
0
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;
}
Esempio n. 3
0
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();
        }
    }
}
Esempio n. 4
0
File: debug.c Progetto: nocrew/ostis
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;
}
Esempio n. 5
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;
	}
}
Esempio n. 6
0
File: debug.c Progetto: nocrew/ostis
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;
}