summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKonstantin Käfer <mail@kkaefer.com>2014-07-07 16:52:23 -0700
committerKonstantin Käfer <mail@kkaefer.com>2014-07-07 16:52:23 -0700
commit501af4a3807474d6de288939266b1f866889bf60 (patch)
tree6e709ac6b4223f3065dfa7b3c7328a90ce822d00
parentf51bd7fcf17c474f106a2c14c00d527d3f8601a4 (diff)
downloadqtlocation-mapboxgl-501af4a3807474d6de288939266b1f866889bf60.tar.gz
fix headless rendering on travis and actually execute the headless test
fixes #357
-rw-r--r--Makefile6
-rw-r--r--common/headless_view.cpp32
-rw-r--r--common/headless_view.hpp10
-rw-r--r--linux/llmr-app.gyp29
-rw-r--r--llmr.gyp25
-rwxr-xr-xscripts/setup_travis.sh3
-rw-r--r--test/test.gyp10
7 files changed, 68 insertions, 47 deletions
diff --git a/Makefile b/Makefile
index 0c6d6eebb9..65f7812981 100644
--- a/Makefile
+++ b/Makefile
@@ -29,13 +29,11 @@ test: build/test/Makefile
# Runs all test cases
run-tests: test
- @for FILE in build/$(BUILDTYPE)/test_*; do \
- $${FILE}; \
- done
+ (cd build/${BUILDTYPE} && exec find . -maxdepth 1 -name "test_*" -exec {} \;)
test/%: build/test/Makefile
$(MAKE) -C build/test BUILDTYPE=$(BUILDTYPE) V=$(V) $*
- (cd build/$(BUILDTYPE) && ./test_$*)
+ (cd build/$(BUILDTYPE) && exec ./test_$*)
##### Makefile builds ##########################################################
diff --git a/common/headless_view.cpp b/common/headless_view.cpp
index 4fd7b42aeb..a44c6e6edb 100644
--- a/common/headless_view.cpp
+++ b/common/headless_view.cpp
@@ -39,9 +39,13 @@ HeadlessView::HeadlessView() {
}
#endif
- #ifdef USE_GLX
+#if LLMR_USE_GLX
x_display = XOpenDisplay(0);
+ if (x_display == nullptr) {
+ throw std::runtime_error("Failed to open X display");
+ }
+
static int pixelFormat[] = {
GLX_RGBA,
GLX_DOUBLEBUFFER,
@@ -55,10 +59,16 @@ HeadlessView::HeadlessView() {
};
x_info = glXChooseVisual(x_display, DefaultScreen(x_display), pixelFormat);
- gl_context = glXCreateContext(display, x_info, 0, GL_TRUE);
- #endif
- make_active();
+ if (x_info == nullptr) {
+ throw std::runtime_error("Error pixel format");
+ }
+
+ gl_context = glXCreateContext(x_display, x_info, 0, GL_TRUE);
+ if (gl_context == nullptr) {
+ throw std::runtime_error("Error creating GL context object");
+ }
+#endif
}
@@ -66,6 +76,8 @@ void HeadlessView::resize(int width, int height) {
clear_buffers();
#if LLMR_USE_CGL
+ make_active();
+
// Create depth/stencil buffer
glGenRenderbuffersEXT(1, &fbo_depth_stencil);
glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, fbo_depth_stencil);
@@ -99,8 +111,10 @@ void HeadlessView::resize(int width, int height) {
#endif
#if LLMR_USE_GLX
- x_pixmap = XCreatePixmap(display, DefaultRootWindow(display), width, height, 32);
- glx_pixmap = glXCreateGLXPixmap(display, x_info, x_pixmap);
+ x_pixmap = XCreatePixmap(x_display, DefaultRootWindow(x_display), width, height, 32);
+ glx_pixmap = glXCreateGLXPixmap(x_display, x_info, x_pixmap);
+
+ make_active();
#endif
}
@@ -128,12 +142,12 @@ void HeadlessView::clear_buffers() {
#if LLMR_USE_GLX
if (glx_pixmap) {
glXDestroyGLXPixmap(x_display, glx_pixmap);
- glx_pixmap = nullptr;
+ glx_pixmap = 0;
}
if (x_pixmap) {
XFreePixmap(x_display, x_pixmap);
- x_pixmap = nullptr;
+ x_pixmap = 0;
}
#endif
}
@@ -155,7 +169,7 @@ void HeadlessView::make_active() {
#endif
#if LLMR_USE_GLX
- if (!glXMakeCurrent(display, glx_pixmap, gl_context)) {
+ if (!glXMakeCurrent(x_display, glx_pixmap, gl_context)) {
fprintf(stderr, "Switching OpenGL context failed\n");
}
#endif
diff --git a/common/headless_view.hpp b/common/headless_view.hpp
index 57cdec5246..a203d477e0 100644
--- a/common/headless_view.hpp
+++ b/common/headless_view.hpp
@@ -3,11 +3,9 @@
#ifdef __APPLE__
#define LLMR_USE_CGL 1
-#define LLMR_CONTEXT_OBJ CGLContextObj
#else
#include <GL/glx.h>
#define LLMR_USE_GLX 1
-#define LLMR_CONTEXT_OBJ GLXContext
#endif
#include <llmr/map/view.hpp>
@@ -31,19 +29,19 @@ private:
private:
- LLMR_CONTEXT_OBJ gl_context;
-
#ifdef LLMR_USE_CGL
+ CGLContextObj gl_context;
GLuint fbo = 0;
GLuint fbo_depth_stencil = 0;
GLuint fbo_color = 0;
#endif
#ifdef LLMR_USE_GLX
+ GLXContext gl_context = nullptr;
XVisualInfo *x_info = nullptr;
Display *x_display = nullptr;
- Pixmap x_pixmap;
- GLXPixmap glx_pixmap;
+ Pixmap x_pixmap = 0;
+ GLXPixmap glx_pixmap = 0;
#endif
};
diff --git a/linux/llmr-app.gyp b/linux/llmr-app.gyp
index c6ab686cbc..0a524c088b 100644
--- a/linux/llmr-app.gyp
+++ b/linux/llmr-app.gyp
@@ -51,34 +51,9 @@
],
'dependencies': [
'../llmr.gyp:llmr-x86',
- 'default_stylesheet',
- 'certificate_bundle',
+ '../llmr.gyp:copy_default_stylesheet',
+ '../llmr.gyp:copy_certificate_bundle',
],
},
- {
- 'target_name': 'default_stylesheet',
- 'type': 'none',
- 'hard_dependency': 1,
- 'dependencies': [
- '../llmr.gyp:build_stylesheet'
- ],
- 'copies': [
- {
- 'files': [ '<(SHARED_INTERMEDIATE_DIR)/bin/style.min.js' ],
- 'destination': '<(PRODUCT_DIR)'
- }
- ]
- },
- {
- 'target_name': 'certificate_bundle',
- 'type': 'none',
- 'hard_dependency': 1,
- 'copies': [
- {
- 'files': [ '../common/ca-bundle.crt' ],
- 'destination': '<(PRODUCT_DIR)'
- }
- ]
- }
],
}
diff --git a/llmr.gyp b/llmr.gyp
index 2ffb3ae631..700be136af 100644
--- a/llmr.gyp
+++ b/llmr.gyp
@@ -56,6 +56,31 @@
}
},
{
+ 'target_name': 'copy_default_stylesheet',
+ 'type': 'none',
+ 'hard_dependency': 1,
+ 'dependencies': [
+ 'build_stylesheet'
+ ],
+ 'copies': [
+ {
+ 'files': [ '<(SHARED_INTERMEDIATE_DIR)/bin/style.min.js' ],
+ 'destination': '<(PRODUCT_DIR)'
+ }
+ ]
+ },
+ {
+ 'target_name': 'copy_certificate_bundle',
+ 'type': 'none',
+ 'hard_dependency': 1,
+ 'copies': [
+ {
+ 'files': [ 'common/ca-bundle.crt' ],
+ 'destination': '<(PRODUCT_DIR)'
+ }
+ ]
+ },
+ {
'target_name': 'llmr-x86',
'product_name': 'llmr-x86',
'type': 'static_library',
diff --git a/scripts/setup_travis.sh b/scripts/setup_travis.sh
index 83b0d2c28b..3b819ea81e 100755
--- a/scripts/setup_travis.sh
+++ b/scripts/setup_travis.sh
@@ -22,6 +22,9 @@ if [[ ${TRAVIS_OS_NAME} == "linux" ]]; then
sudo apt-get -y install git build-essential zlib1g-dev automake libtool xutils-dev make cmake pkg-config
sudo apt-get -y install libxi-dev libglu1-mesa-dev x11proto-randr-dev x11proto-xext-dev libxrandr-dev x11proto-xf86vidmode-dev libxxf86vm-dev libxcursor-dev
+ export DISPLAY=:99.0
+ sh -e /etc/init.d/xvfb start
+
# use g++ that supports c++11
if [[ ${CXX} == "g++" ]]; then
export CXX="g++-4.8" ;
diff --git a/test/test.gyp b/test/test.gyp
index 98effdfa9e..340a73ba39 100644
--- a/test/test.gyp
+++ b/test/test.gyp
@@ -16,7 +16,12 @@
],
},
}, {
- # TODO: add OpenGL link settings for linux
+ 'link_settings': {
+ 'libraries': [
+ '<@(glfw3_libraries)', # This is a hack since we're not actually using GLFW
+ '-lboost_regex',
+ ],
+ },
}],
],
},
@@ -148,6 +153,8 @@
"../llmr.gyp:llmr-x86",
"link_gl",
"link_curl",
+ '../llmr.gyp:copy_default_stylesheet',
+ '../llmr.gyp:copy_certificate_bundle',
]
},
{
@@ -159,6 +166,7 @@
"variant",
"tile",
"functions",
+ "headless",
],
}
]