Use global libX11 symbols when present.

Bug 20754549

Change-Id: I029310192d638a2769bf6e2d2950717d6a4c484b
Reviewed-on: https://swiftshader-review.googlesource.com/3050
Reviewed-by: Alexis Hétu <sugoi@google.com>
Reviewed-by: Nicolas Capens <capn@google.com>
Tested-by: Nicolas Capens <capn@google.com>
diff --git a/src/Common/SharedLibrary.hpp b/src/Common/SharedLibrary.hpp
index 31e6036..aa08d3c 100644
--- a/src/Common/SharedLibrary.hpp
+++ b/src/Common/SharedLibrary.hpp
@@ -19,8 +19,8 @@
 #endif

 

 void *getLibraryHandle(const char *path);

-void *loadLibrary(const char *path);
-void freeLibrary(void *library);
+void *loadLibrary(const char *path);

+void freeLibrary(void *library);

 void *getProcAddress(void *library, const char *name);

 

 template<int n>

@@ -114,8 +114,15 @@
 

 	inline void *getProcAddress(void *library, const char *name)

 	{

-		return library ? dlsym(library, name) : 0;

-	}

+		void *symbol = dlsym(library, name);

+

+		if(!symbol)

+		{

+			const char *reason = dlerror();   // Silence the error

+		}

+

+		return symbol;

+    }

 #endif

 

 #endif   // SharedLibrary_hpp

diff --git a/src/Common/Version.h b/src/Common/Version.h
index e144bf4..0fc640c 100644
--- a/src/Common/Version.h
+++ b/src/Common/Version.h
@@ -1,7 +1,7 @@
 #define MAJOR_VERSION 3
 #define MINOR_VERSION 2
-#define BUILD_VERSION 9
-#define BUILD_REVISION 47659
+#define BUILD_VERSION 10
+#define BUILD_REVISION 47660
 
 #define STRINGIFY(x) #x
 #define MACRO_STRINGIFY(x) STRINGIFY(x)
diff --git a/src/Main/libX11.cpp b/src/Main/libX11.cpp
index 9f6a56e..4b72a7c 100644
--- a/src/Main/libX11.cpp
+++ b/src/Main/libX11.cpp
@@ -46,9 +46,18 @@
 
         if(libX11)
         {
-			libXext = loadLibrary("libXext.so");
-			libX11exports = new LibX11exports(libX11, libXext);
-		}
+            libXext = loadLibrary("libXext.so");
+            libX11exports = new LibX11exports(libX11, libXext);
+        }
+        else   // Might have failed to load due to sandboxing. Search the global scope for pre-loaded library.
+        {
+            if(getProcAddress(RTLD_DEFAULT, "XOpenDisplay"))
+            {
+                libX11exports = new LibX11exports(RTLD_DEFAULT, RTLD_DEFAULT);
+            }
+
+            libX11 = (void*)-1;   // Don't attempt loading more than once.
+        }
     }
 
     return libX11exports;
diff --git a/src/OpenGL/common/Image.hpp b/src/OpenGL/common/Image.hpp
index 15b0181..93a0535 100644
--- a/src/OpenGL/common/Image.hpp
+++ b/src/OpenGL/common/Image.hpp
@@ -144,7 +144,6 @@
 		release();

 	}

 

-

 protected:

 	const GLsizei width;

 	const GLsizei height;

diff --git a/src/OpenGL/libEGL/libEGL.cbp b/src/OpenGL/libEGL/libEGL.cbp
index 8ef0298..46b2b34 100644
--- a/src/OpenGL/libEGL/libEGL.cbp
+++ b/src/OpenGL/libEGL/libEGL.cbp
@@ -120,6 +120,7 @@
 		<Unit filename="../common/Object.cpp" />
 		<Unit filename="../common/Object.hpp" />
 		<Unit filename="../common/debug.cpp" />
+		<Unit filename="../common/debug.h" />
 		<Unit filename="Config.cpp" />
 		<Unit filename="Config.h" />
 		<Unit filename="Display.cpp" />
diff --git a/src/OpenGL/libEGL/main.cpp b/src/OpenGL/libEGL/main.cpp
index 549c058..40b53a4 100644
--- a/src/OpenGL/libEGL/main.cpp
+++ b/src/OpenGL/libEGL/main.cpp
@@ -22,7 +22,6 @@
 #include "Common/SharedLibrary.hpp"

 #include "common/debug.h"

 

-#define EGL_EGLEXT_PROTOTYPES

 #include <EGL/eglext.h>

 

 static sw::Thread::LocalStorageKey currentTLS = TLS_OUT_OF_INDEXES;