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/Common/Version.h b/src/Common/Version.h
index 288fa09..e144bf4 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 8
-#define BUILD_REVISION 47658
+#define BUILD_VERSION 9
+#define BUILD_REVISION 47659
#define STRINGIFY(x) #x
#define MACRO_STRINGIFY(x) STRINGIFY(x)
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;
diff --git a/src/Main/libX11.hpp b/src/Main/libX11.hpp
index eb5f6fc..897a662 100644
--- a/src/Main/libX11.hpp
+++ b/src/Main/libX11.hpp
@@ -38,7 +38,15 @@
class LibX11
{
public:
+ operator bool()
+ {
+ return loadExports();
+ }
+
LibX11exports *operator->();
+
+private:
+ LibX11exports *loadExports();
};
extern LibX11 libX11;
diff --git a/src/OpenGL/libEGL/Display.cpp b/src/OpenGL/libEGL/Display.cpp
index 28042f9..ac26c5e 100644
--- a/src/OpenGL/libEGL/Display.cpp
+++ b/src/OpenGL/libEGL/Display.cpp
@@ -44,7 +44,14 @@
if(platform == EGL_UNKNOWN) // Default
{
#if defined(__unix__)
- platform = EGL_PLATFORM_X11_EXT;
+ if(libX11)
+ {
+ platform = EGL_PLATFORM_X11_EXT;
+ }
+ else
+ {
+ platform = EGL_PLATFORM_GBM_KHR;
+ }
#endif
}