int pl_fbdev_open(void) { struct timeval now; pl_fbdev_buf = vout_fbdev_flip(layer_fb); omap_enable_layer(1); // try to align redraws to vsync vout_fbdev_wait_vsync(layer_fb); gettimeofday(&now, 0); vsync_usec_time = now.tv_usec; while (vsync_usec_time >= pl_frame_interval) vsync_usec_time -= pl_frame_interval; return 0; }
void *pl_fbdev_flip(void) { flip_cnt++; if (pl_fbdev_buf != NULL) { if (hud_msg[0] != 0) print_hud(); else if (g_opts & OPT_SHOWFPS) print_fps(); if (g_opts & OPT_SHOWCPU) print_cpu_usage(); } // let's flip now pl_fbdev_buf = vout_fbdev_flip(layer_fb); return pl_fbdev_buf; }
void plat_video_menu_end(void) { g_menuscreen_ptr = vout_fbdev_flip(main_fb); }
void plat_init(void) { const char *main_fb_name, *layer_fb_name; void *temp_frame; int fd, ret, w, h; main_fb_name = getenv("FBDEV_MAIN"); if (main_fb_name == NULL) main_fb_name = "/dev/fb0"; layer_fb_name = getenv("FBDEV_LAYER"); if (layer_fb_name == NULL) layer_fb_name = "/dev/fb1"; // must set the layer up first to be able to use it fd = open(layer_fb_name, O_RDWR); if (fd == -1) { fprintf(stderr, "%s: ", layer_fb_name); perror("open"); exit(1); } ret = omap_setup_layer_(fd, 0, g_layer_x, g_layer_y, g_layer_w, g_layer_h); close(fd); if (ret != 0) { fprintf(stderr, "failed to set up layer, exiting.\n"); exit(1); } xenv_init(NULL, "PCSX-ReARMed"); w = h = 0; main_fb = vout_fbdev_init(main_fb_name, &w, &h, 16, 2); if (main_fb == NULL) { fprintf(stderr, "couldn't init fb: %s\n", main_fb_name); exit(1); } g_menuscreen_w = w; g_menuscreen_h = h; g_menuscreen_ptr = vout_fbdev_flip(main_fb); pl_rearmed_cbs.screen_w = w; pl_rearmed_cbs.screen_h = h; w = 640; h = 512; layer_fb = vout_fbdev_init(layer_fb_name, &w, &h, 16, 3); if (layer_fb == NULL) { fprintf(stderr, "couldn't init fb: %s\n", layer_fb_name); goto fail0; } temp_frame = calloc(g_menuscreen_w * g_menuscreen_h * 2, 1); if (temp_frame == NULL) { fprintf(stderr, "OOM\n"); goto fail1; } g_menubg_ptr = temp_frame; plat_pandora_init(); // XXX return; fail1: vout_fbdev_finish(layer_fb); fail0: vout_fbdev_finish(main_fb); exit(1); }
void plat_init(void) { const char *main_fb_name, *layer_fb_name; void *temp_frame; int fd, ret, w, h; main_fb_name = getenv("FBDEV_MAIN"); if (main_fb_name == NULL) main_fb_name = "/dev/fb0"; layer_fb_name = getenv("FBDEV_LAYER"); if (layer_fb_name == NULL) layer_fb_name = "/dev/fb1"; // must set the layer up first to be able to use it fd = open(layer_fb_name, O_RDWR); if (fd == -1) { fprintf(stderr, "%s: ", layer_fb_name); perror("open"); exit(1); } ret = omap_setup_layer_(fd, 0, g_layer_x, g_layer_y, g_layer_w, g_layer_h, 1); close(fd); if (ret != 0) { fprintf(stderr, "failed to set up layer, exiting.\n"); exit(1); } oshide_init(); w = h = 0; main_fb = vout_fbdev_init(main_fb_name, &w, &h, 16, 2); if (main_fb == NULL) { fprintf(stderr, "couldn't init fb: %s\n", main_fb_name); exit(1); } g_menuscreen_w = w; g_menuscreen_h = h; g_menuscreen_ptr = vout_fbdev_flip(main_fb); w = 640; h = 512; // ?? layer_fb = vout_fbdev_init(layer_fb_name, &w, &h, 16, 3); if (layer_fb == NULL) { fprintf(stderr, "couldn't init fb: %s\n", layer_fb_name); goto fail0; } temp_frame = calloc(g_menuscreen_w * g_menuscreen_h * 2, 1); if (temp_frame == NULL) { fprintf(stderr, "OOM\n"); goto fail1; } g_menubg_ptr = temp_frame; in_set_config(in_name_to_id("evdev:gpio-keys"), IN_CFG_KEY_NAMES, pandora_gpio_keys, sizeof(pandora_gpio_keys)); return; fail1: vout_fbdev_finish(layer_fb); fail0: vout_fbdev_finish(main_fb); exit(1); }