X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=plat_sdl.c;h=6a86d1d073e3dbc292a79be7b3f15ec18fefdd7f;hb=4919040522d4c6a0d3fb64ebee2ffb51c37c8230;hp=ab606bb98328a2a35539ee3a36fc576a4a7cbfda;hpb=b0dc47eceaea9f1c77ee0f4bc0ba5b3fc9af383c;p=libpicofe.git diff --git a/plat_sdl.c b/plat_sdl.c index ab606bb..6a86d1d 100644 --- a/plat_sdl.c +++ b/plat_sdl.c @@ -123,7 +123,9 @@ int plat_sdl_change_video_mode(int w, int h, int force) if (plat_target.vout_method == 0) { SDL_PumpEvents(); -#if defined(SDL_TRIPLEBUF) && defined(SDL_BUFFER_3X) +#if defined SDL_SURFACE_SW + plat_sdl_screen = SDL_SetVideoMode(w, h, 16, SDL_SWSURFACE); +#elif defined(SDL_TRIPLEBUF) && defined(SDL_BUFFER_3X) plat_sdl_screen = SDL_SetVideoMode(w, h, 16, SDL_HWSURFACE | SDL_TRIPLEBUF); #else plat_sdl_screen = SDL_SetVideoMode(w, h, 16, SDL_HWSURFACE | SDL_DOUBLEBUF); @@ -186,9 +188,11 @@ int plat_sdl_init(void) static const char *vout_list[] = { NULL, NULL, NULL, NULL, NULL }; const SDL_VideoInfo *info; SDL_SysWMinfo wminfo; + const char *env; int overlay_works = 0; int gl_works = 0; int i, ret, h; + int try_gl; ret = SDL_Init(SDL_INIT_VIDEO | SDL_INIT_NOPARACHUTE); if (ret != 0) { @@ -231,6 +235,7 @@ int plat_sdl_init(void) } g_menuscreen_w = window_w = plat_sdl_screen->w; g_menuscreen_h = window_h = plat_sdl_screen->h; + g_menuscreen_pp = g_menuscreen_w; // overlay/gl require native bpp in some cases.. plat_sdl_screen = SDL_SetVideoMode(g_menuscreen_w, g_menuscreen_h, @@ -273,8 +278,22 @@ int plat_sdl_init(void) (void)wminfo; #endif - ret = gl_init(display, window, &gl_quirks); + ret = -1; + try_gl = 1; + env = getenv("DISPLAY"); + if (env && env[0] != ':') { + fprintf(stderr, "looks like a remote DISPLAY, " + "not trying GL (use PICOFE_GL=1 to override)\n"); + // because some drivers just kill the program with no way to recover + try_gl = 0; + } + env = getenv("PICOFE_GL"); + if (env) + try_gl = atoi(env); + if (try_gl) + ret = gl_init(display, window, &gl_quirks); if (ret == 0) { + gl_announce(); gl_works = 1; gl_finish(); }