When X11 is unavailable, default to a headless display.

Bug 20104157

Change-Id: Idc6cbadc69921b3fa5c299ffe8ad4d2442d0478f
Reviewed-on: https://swiftshader-review.googlesource.com/2901
Reviewed-by: Alexis Hétu <sugoi@google.com>
Tested-by: Nicolas Capens <capn@google.com>
Reviewed-by: Nicolas Capens <capn@google.com>
diff --git a/src/Main/libX11.cpp b/src/Main/libX11.cpp
index ebd76ff..9f6a56e 100644
--- a/src/Main/libX11.cpp
+++ b/src/Main/libX11.cpp
@@ -31,6 +31,11 @@
 
 LibX11exports *LibX11::operator->()
 {
+	return loadExports();
+}
+
+LibX11exports *LibX11::loadExports()
+{
     static void *libX11 = nullptr;
     static void *libXext = nullptr;
     static LibX11exports *libX11exports = nullptr;
@@ -38,8 +43,12 @@
     if(!libX11)
     {
         libX11 = loadLibrary("libX11.so");
-        libXext = loadLibrary("libXext.so");
-        libX11exports = new LibX11exports(libX11, libXext);
+
+        if(libX11)
+        {
+			libXext = loadLibrary("libXext.so");
+			libX11exports = new LibX11exports(libX11, libXext);
+		}
     }
 
     return libX11exports;