Home | History | Annotate | Download | only in libEGL
      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