Try resolving existing X11 symbols before loading libX11.

libX11 may have already been loaded (dynamically or statically) by the
application. Attempting to load it again could result in a different
version being loaded, causing various compatibility issues.

Bug b/32880157

Change-Id: Ica8e6b1c85b82469885a20dcef31e25e6b598132
Reviewed-on: https://swiftshader-review.googlesource.com/8348
Tested-by: Nicolas Capens <capn@google.com>
Reviewed-by: Alexis Hétu <sugoi@google.com>
Reviewed-by: Nicolas Capens <capn@google.com>
diff --git a/src/Main/libX11.cpp b/src/Main/libX11.cpp
index 7739e4a..9c056bf 100644
--- a/src/Main/libX11.cpp
+++ b/src/Main/libX11.cpp
@@ -56,21 +56,24 @@
 
 	if(!libX11)
 	{
-		libX11 = loadLibrary("libX11.so");
-
-		if(libX11)
+		if(getProcAddress(RTLD_DEFAULT, "XOpenDisplay"))   // Search the global scope for pre-loaded X11 library.
 		{
-			libXext = loadLibrary("libXext.so");
-			libX11exports = new LibX11exports(libX11, libXext);
+			libX11exports = new LibX11exports(RTLD_DEFAULT, RTLD_DEFAULT);
+			libX11 = (void*)-1;   // No need to load it.
 		}
-		else   // Might have failed to load due to sandboxing. Search the global scope for pre-loaded library.
+		else
 		{
-			if(getProcAddress(RTLD_DEFAULT, "XOpenDisplay"))
-			{
-				libX11exports = new LibX11exports(RTLD_DEFAULT, RTLD_DEFAULT);
-			}
+			libX11 = loadLibrary("libX11.so");
 
-			libX11 = (void*)-1;   // Don't attempt loading more than once.
+			if(libX11)
+			{
+				libXext = loadLibrary("libXext.so");
+				libX11exports = new LibX11exports(libX11, libXext);
+			}
+			else
+			{
+				libX11 = (void*)-1;   // Don't attempt loading more than once.
+			}
 		}
 	}