- SDL_VERSION(&wminfo.version);
- SDL_GetWMInfo(&wminfo);
- display = wminfo.info.x11.display;
- window = (void *)wminfo.info.x11.window;
-
- ret = gl_init(display, window);
+ // get x11 display/window for GL
+ SDL_VideoDriverName(vid_drv_name, sizeof(vid_drv_name));
+#ifdef SDL_VIDEO_DRIVER_X11
+ if (strcmp(vid_drv_name, "x11") == 0) {
+ SDL_VERSION(&wminfo.version);
+ ret = SDL_GetWMInfo(&wminfo);
+ if (ret > 0) {
+ display = wminfo.info.x11.display;
+ window = (void *)wminfo.info.x11.window;
+ }
+ }
+#else
+ (void)wminfo;
+#endif
+
+ 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, g_menuscreen_w, g_menuscreen_h);