static void open_screen(struct uae_prefs *p) { char layersize[20]; if(prSDLScreen != NULL) graphics_subshutdown(); if(!screen_is_picasso) { CalcPandoraWidth(p); if(curr_layer_width != p->gfx_size_fs.width) { snprintf(layersize, 20, "%dx480", p->gfx_size_fs.width); #ifndef WIN32 setenv("SDL_OMAP_LAYER_SIZE", layersize, 1); #endif } } else { #ifdef PICASSO96 if(picasso_vidinfo.height < 480) snprintf(layersize, 20, "%dx480", picasso_vidinfo.width); else snprintf(layersize, 20, "%dx%d", picasso_vidinfo.width, picasso_vidinfo.height); #endif #ifndef WIN32 setenv("SDL_OMAP_LAYER_SIZE", layersize, 1); #endif } #ifdef ANDROIDSDL update_onscreen(); #endif if(!screen_is_picasso) { if(prSDLScreen == NULL || prSDLScreen->w != p->gfx_size.width || prSDLScreen->h != p->gfx_size.height) { #if defined(PANDORA) && !defined(WIN32) prSDLScreen = SDL_SetVideoMode(p->gfx_size.width, p->gfx_size.height, 16, SDL_HWSURFACE|SDL_FULLSCREEN|SDL_DOUBLEBUF); #elif defined(PANDORA) && defined(WIN32) prSDLScreen = SDL_SetVideoMode(p->gfx_size.width, p->gfx_size.height, 16, SDL_SWSURFACE|SDL_DOUBLEBUF); #else prSDLScreen = SDL_SetVideoMode(p->gfx_size.width, p->gfx_size.height, 16, SDL_HWSURFACE|SDL_FULLSCREEN); #endif } } else { #ifdef PICASSO96 prSDLScreen = SDL_SetVideoMode(picasso_vidinfo.width, picasso_vidinfo.height, 16, SDL_HWSURFACE|SDL_FULLSCREEN|SDL_DOUBLEBUF); #endif } if(prSDLScreen != NULL) { InitAmigaVidMode(p); init_row_map(); } }
static void open_screen(struct uae_prefs *p) { char layersize[20]; graphics_subshutdown(); if(!screen_is_picasso) { CalcPandoraWidth(p); snprintf(layersize, 20, "%dx480", p->gfx_size_fs.width); #ifndef WIN32 setenv("SDL_OMAP_LAYER_SIZE", layersize, 1); #endif } else { #ifdef PICASSO96 if(picasso_vidinfo.height < 480) snprintf(layersize, 20, "%dx480", picasso_vidinfo.width); else snprintf(layersize, 20, "%dx%d", picasso_vidinfo.width, picasso_vidinfo.height); #endif #ifndef WIN32 setenv("SDL_OMAP_LAYER_SIZE", layersize, 1); #endif } #ifndef WIN32 setenv("SDL_OMAP_VSYNC", "0", 1); #endif #ifdef ANDROIDSDL update_onscreen(); #endif if(!screen_is_picasso) { if(prSDLScreen == NULL || prSDLScreen->w != p->gfx_size.width || prSDLScreen->h != p->gfx_size.height) { #if defined(PANDORA) && !defined(WIN32) prSDLScreen = SDL_SetVideoMode(p->gfx_size.width, p->gfx_size.height, 16, SDL_HWSURFACE|SDL_FULLSCREEN|SDL_DOUBLEBUF); #elif defined(PANDORA) && defined(WIN32) prSDLScreen = SDL_SetVideoMode(p->gfx_size.width, p->gfx_size.height, 16, SDL_SWSURFACE|SDL_DOUBLEBUF); #else prSDLScreen = SDL_SetVideoMode(p->gfx_size.width, p->gfx_size.height, 16, SDL_HWSURFACE|SDL_FULLSCREEN); #endif } } else { #ifdef PICASSO96 prSDLScreen = SDL_SetVideoMode(picasso_vidinfo.width, picasso_vidinfo.height, 16, SDL_HWSURFACE|SDL_FULLSCREEN|SDL_DOUBLEBUF); #endif } if(prSDLScreen != NULL) { InitAmigaVidMode(p); init_row_map(); } current_vsync_frame = 0; fbdev = open("/dev/fb0", O_RDWR); if(fbdev != -1) { // Check if we have vsync with frame counter... current_vsync_frame = 0; ioctl(fbdev, OMAPFB_WAITFORVSYNC_FRAME, ¤t_vsync_frame); if(current_vsync_frame != 0) current_vsync_frame += 2; } }