1 // 2 // Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved. 3 // Use of this source code is governed by a BSD-style license that can be 4 // found in the LICENSE file. 5 // 6 7 // main.h: Management of thread-local data. 8 9 #ifndef LIBEGL_MAIN_H_ 10 #define LIBEGL_MAIN_H_ 11 12 #define EGLAPI 13 #include <EGL/egl.h> 14 #include <EGL/eglext.h> 15 16 namespace egl 17 { 18 struct Current 19 { 20 EGLint error; 21 EGLenum API; 22 EGLDisplay display; 23 EGLSurface drawSurface; 24 EGLSurface readSurface; 25 }; 26 27 void setCurrentError(EGLint error); 28 EGLint getCurrentError(); 29 30 void setCurrentAPI(EGLenum API); 31 EGLenum getCurrentAPI(); 32 33 void setCurrentDisplay(EGLDisplay dpy); 34 EGLDisplay getCurrentDisplay(); 35 36 void setCurrentDrawSurface(EGLSurface surface); 37 EGLSurface getCurrentDrawSurface(); 38 39 void setCurrentReadSurface(EGLSurface surface); 40 EGLSurface getCurrentReadSurface(); 41 42 void error(EGLint errorCode); 43 44 template<class T> 45 const T &error(EGLint errorCode, const T &returnValue) 46 { 47 error(errorCode); 48 49 return returnValue; 50 } 51 52 template<class T> 53 const T &success(const T &returnValue) 54 { 55 egl::setCurrentError(EGL_SUCCESS); 56 57 return returnValue; 58 } 59 60 } 61 62 #endif // LIBEGL_MAIN_H_ 63