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 15 namespace egl 16 { 17 struct Current 18 { 19 EGLint error; 20 EGLenum API; 21 EGLDisplay display; 22 EGLSurface drawSurface; 23 EGLSurface readSurface; 24 }; 25 26 void setCurrentError(EGLint error); 27 EGLint getCurrentError(); 28 29 void setCurrentAPI(EGLenum API); 30 EGLenum getCurrentAPI(); 31 32 void setCurrentDisplay(EGLDisplay dpy); 33 EGLDisplay getCurrentDisplay(); 34 35 void setCurrentDrawSurface(EGLSurface surface); 36 EGLSurface getCurrentDrawSurface(); 37 38 void setCurrentReadSurface(EGLSurface surface); 39 EGLSurface getCurrentReadSurface(); 40 } 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 #endif // LIBEGL_MAIN_H_ 61