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;