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#include <EGL/egl.h> 13#include <EGL/eglext.h> 14 15namespace egl 16{ 17struct Current 18{ 19 EGLint error; 20 EGLenum API; 21 EGLDisplay display; 22 EGLSurface drawSurface; 23 EGLSurface readSurface; 24}; 25 26void setCurrentError(EGLint error); 27EGLint getCurrentError(); 28 29void setCurrentAPI(EGLenum API); 30EGLenum getCurrentAPI(); 31 32void setCurrentDisplay(EGLDisplay dpy); 33EGLDisplay getCurrentDisplay(); 34 35void setCurrentDrawSurface(EGLSurface surface); 36EGLSurface getCurrentDrawSurface(); 37 38void setCurrentReadSurface(EGLSurface surface); 39EGLSurface getCurrentReadSurface(); 40 41void error(EGLint errorCode); 42 43template<class T> 44const T &error(EGLint errorCode, const T &returnValue) 45{ 46 error(errorCode); 47 48 return returnValue; 49} 50 51template<class T> 52const T &success(const T &returnValue) 53{ 54 egl::setCurrentError(EGL_SUCCESS); 55 56 return returnValue; 57} 58 59} 60 61#endif // LIBEGL_MAIN_H_ 62