diff --git a/README.md b/README.md index 94cd3fc..0c23c85 100644 --- a/README.md +++ b/README.md @@ -35,7 +35,7 @@ Useful flags: Building the project uses CMake. -First you must ensure you have the depdencies. There are scripts in buildscripts +First you must ensure you have the dependencies. There are scripts in buildscripts intended to run on the CI that can also be used to build locally. You can run these as follows: @@ -51,7 +51,7 @@ On Linux or OSX: bash buildscripts/1-install-deps-travis.sh ``` -Alternativly on Ubuntu you can: +Alternatively on Ubuntu you can: ```bash sudo apt-get install libgles2-mesa-dev ``` diff --git a/common.cpp b/common.cpp index 8e8a2e1..00747ed 100644 --- a/common.cpp +++ b/common.cpp @@ -3,6 +3,26 @@ #include +const char *gl_error_to_str(EGLint error){ + switch(error){ + case EGL_SUCCESS: return "EGL_SUCCESS"; + case EGL_NOT_INITIALIZED: return "EGL_NOT_INITIALIZED"; + case EGL_BAD_ACCESS: return "EGL_BAD_ACCESS"; + case EGL_BAD_ALLOC: return "EGL_BAD_ALLOC"; + case EGL_BAD_ATTRIBUTE: return "EGL_BAD_ATTRIBUTE"; + case EGL_BAD_CONTEXT: return "EGL_BAD_CONTEXT"; + case EGL_BAD_CONFIG: return "EGL_BAD_CONFIG"; + case EGL_BAD_CURRENT_SURFACE: return "EGL_BAD_CURRENT_SURFACE"; + case EGL_BAD_DISPLAY: return "EGL_BAD_DISPLAY"; + case EGL_BAD_MATCH: return "EGL_BAD_MATCH"; + case EGL_BAD_PARAMETER: return "EGL_BAD_PARAMETER"; + case EGL_BAD_NATIVE_PIXMAP: return "EGL_BAD_NATIVE_PIXMAP"; + case EGL_BAD_NATIVE_WINDOW: return "EGL_BAD_NATIVE_WINDOW"; + case EGL_CONTEXT_LOST: return "EGL_CONTEXT_LOST"; + default: return "BAD ERROR"; + } +} + bool init_gl( const int width, const int height, @@ -48,7 +68,7 @@ bool init_gl( EGLint minor; if(eglInitialize(display, &major, &minor) == EGL_FALSE) { - std::cerr << "eglInitialize failed." << std::endl; + std::cerr << "eglInitialize failed with " << gl_error_to_str(eglGetError()) << std::endl; return false; } diff --git a/get_image.cpp b/get_image.cpp index 5f73726..0988fc2 100644 --- a/get_image.cpp +++ b/get_image.cpp @@ -156,7 +156,7 @@ int render( template T *getArray(const json& j) { T *a = new T[j.size()]; - for (int i = 0; i < j.size(); i++) { + for (unsigned int i = 0; i < j.size(); i++) { a[i] = j[i]; } return a; @@ -332,6 +332,22 @@ int setUniforms(const GLuint& program, const std::string& fragment_shader) { return EXIT_SUCCESS; } +class TerminateEGLAtExit{ + EGLDisplay display; + + public: + TerminateEGLAtExit(EGLDisplay); + ~TerminateEGLAtExit(); +}; + +TerminateEGLAtExit::TerminateEGLAtExit(EGLDisplay display){ + this->display = display; +} + +TerminateEGLAtExit::~TerminateEGLAtExit(){ + auto succeeded = eglTerminate(this->display); + assert(succeeded); +} /*---------------------------------------------------------------------------*/ int main(int argc, char* argv[]) { @@ -354,6 +370,8 @@ int main(int argc, char* argv[]) { return EXIT_FAILURE; } + TerminateEGLAtExit cleanup_display = display; + bool persist = false; bool animate = false; bool exit_compile = false;