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 
     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