x11: Let apps specify that video init should fail if XRandR is unavailable.
authorRyan C. Gordon <icculus@icculus.org>
Mon, 04 Jan 2016 23:44:27 -0500
changeset 10015 d809627808b1
parent 10014 906340c8c820
child 10016 d565c0f35a92
x11: Let apps specify that video init should fail if XRandR is unavailable. Notably: it sets the error string to inform you that your custom SDL is built without xrandr support, which apparently has been a support issue for Unreal Engine 4 developers.
src/video/x11/SDL_x11modes.c
--- a/src/video/x11/SDL_x11modes.c	Tue Jan 05 02:40:14 2016 -0500
+++ b/src/video/x11/SDL_x11modes.c	Mon Jan 04 23:44:27 2016 -0500
@@ -618,6 +618,20 @@
 
 /* !!! FIXME: eventually remove support for Xinerama and XVidMode (everything below here). */
 
+    /* This is a workaround for some apps (UnrealEngine4, for example) until
+       we sort out the ramifications of removing XVidMode support outright.
+       This block should be removed with the XVidMode support. */
+    {
+        const char *env = SDL_GetHint("SDL_VIDEO_X11_REQUIRE_XRANDR");
+        if (env && SDL_atoi(env)) {
+            #if SDL_VIDEO_DRIVER_X11_XRANDR
+            return SDL_SetError("XRandR support is required but not available");
+            #else
+            return SDL_SetError("XRandR support is required but not built into SDL!");
+            #endif
+        }
+    }
+
 #if SDL_VIDEO_DRIVER_X11_XINERAMA
     /* Query Xinerama extention
      * NOTE: This works with Nvidia Twinview correctly, but you need version 302.17 (released on June 2012)