OSDN Git Service

Avoid resetting the EGL error code on client context retrieval.
authorNicolas Capens <capn@google.com>
Wed, 5 Nov 2014 21:05:12 +0000 (16:05 -0500)
committerNicolas Capens <capn@google.com>
Wed, 5 Nov 2014 21:30:03 +0000 (16:30 -0500)
BUG=18208531

Change-Id: I0246a6fcfdeefd8c84a28c3d86723d50d3f0cbac

src/OpenGL/libEGL/libEGL.def
src/OpenGL/libEGL/main.cpp
src/OpenGL/libGLES_CM/main.cpp
src/OpenGL/libGLESv2/main.cpp
src/Radiance/libEGL/libEGL.cpp
src/Radiance/libEGL/libEGL.def
src/Radiance/libEGL/main.cpp
src/Radiance/libRAD/main.cpp

index 71a5e67..8b4caf5 100644 (file)
@@ -33,4 +33,8 @@ EXPORTS
        eglTerminate                    @4
        eglWaitClient                   @16
        eglWaitGL                       @30
-       eglWaitNative                   @31
\ No newline at end of file
+       eglWaitNative                   @31
+
+       ; Functions that don't change the error code, for use by client APIs
+       clientGetCurrentContext
+       clientGetCurrentDisplay
\ No newline at end of file
index 2243fd8..80882ce 100644 (file)
@@ -255,7 +255,7 @@ void setCurrentContext(EGLContext ctx)
     current->context = ctx;\r
 }\r
 \r
-EGLDisplay getCurrentContext()\r
+EGLContext getCurrentContext()\r
 {\r
     Current *current = eglGetCurrent();\r
 \r
@@ -318,6 +318,19 @@ void error(EGLint errorCode)
        }\r
 }\r
 \r
+extern "C"\r
+{\r
+EGLContext clientGetCurrentContext()\r
+{\r
+    return egl::getCurrentContext();\r
+}\r
+\r
+EGLContext clientGetCurrentDisplay()\r
+{\r
+    return egl::getCurrentDisplay();\r
+}\r
+}\r
+\r
 namespace es1\r
 {\r
        egl::Context *(*createContext)(const egl::Config *config, const egl::Context *shareContext) = 0;\r
index dd18858..8c0558d 100644 (file)
@@ -50,8 +50,8 @@ CONSTRUCTOR static bool glAttachProcess()
        #endif\r
 \r
        libEGL = loadLibrary(libEGL_lib);\r
-       egl::getCurrentContext = (egl::Context *(*)())getProcAddress(libEGL, "eglGetCurrentContext");\r
-       egl::getCurrentDisplay = (egl::Display *(*)())getProcAddress(libEGL, "eglGetCurrentDisplay");\r
+       egl::getCurrentContext = (egl::Context *(*)())getProcAddress(libEGL, "clientGetCurrentContext");\r
+       egl::getCurrentDisplay = (egl::Display *(*)())getProcAddress(libEGL, "clientGetCurrentDisplay");\r
 \r
     return libEGL != 0;\r
 }\r
index 6252cf8..7d34bdd 100644 (file)
@@ -50,8 +50,8 @@ CONSTRUCTOR static bool glAttachProcess()
        #endif\r
 \r
        libEGL = loadLibrary(libEGL_lib);\r
-       egl::getCurrentContext = (egl::Context *(*)())getProcAddress(libEGL, "eglGetCurrentContext");\r
-       egl::getCurrentDisplay = (egl::Display *(*)())getProcAddress(libEGL, "eglGetCurrentDisplay");\r
+       egl::getCurrentContext = (egl::Context *(*)())getProcAddress(libEGL, "clientGetCurrentContext");\r
+       egl::getCurrentDisplay = (egl::Display *(*)())getProcAddress(libEGL, "clientGetCurrentDisplay");\r
 \r
        #if defined(_WIN32)\r
        const char *libGLES_CM_lib[] = {"libGLES_CM.dll", "libGLES_CM_translator.dll"};\r
index a726240..6f7903c 100644 (file)
@@ -1198,10 +1198,10 @@ __eglMustCastToProperFunctionPointerType EGLAPIENTRY eglGetProcAddress(const cha
                        #define EXTENSION(name) {#name, (__eglMustCastToProperFunctionPointerType)name}\r
 \r
                        EXTENSION(eglCreateImageKHR),\r
-\0           EXTENSION(eglDestroyImageKHR),\r
+                       EXTENSION(eglDestroyImageKHR),\r
 \r
                        #undef EXTENSION\r
-\0       };\r
+               };\r
 \r
         for(int ext = 0; ext < sizeof(eglExtensions) / sizeof(Extension); ext++)\r
         {\r
index 71a5e67..8b4caf5 100644 (file)
@@ -33,4 +33,8 @@ EXPORTS
        eglTerminate                    @4
        eglWaitClient                   @16
        eglWaitGL                       @30
-       eglWaitNative                   @31
\ No newline at end of file
+       eglWaitNative                   @31
+
+       ; Functions that don't change the error code, for use by client APIs
+       clientGetCurrentContext
+       clientGetCurrentDisplay
\ No newline at end of file
index 9f43f79..4c84130 100644 (file)
@@ -237,7 +237,7 @@ void setCurrentContext(EGLContext ctx)
     current->context = ctx;\r
 }\r
 \r
-EGLDisplay getCurrentContext()\r
+EGLContext getCurrentContext()\r
 {\r
     Current *current = eglGetCurrent();\r
 \r
@@ -300,6 +300,19 @@ void error(EGLint errorCode)
        }\r
 }\r
 \r
+extern "C"\r
+{\r
+EGLContext clientGetCurrentContext()\r
+{\r
+    return egl::getCurrentContext();\r
+}\r
+\r
+EGLContext clientGetCurrentDisplay()\r
+{\r
+    return egl::getCurrentDisplay();\r
+}\r
+}\r
+\r
 namespace rad\r
 {\r
        egl::Context *(*createContext)(const egl::Config *config, const egl::Context *shareContext) = 0;\r
index 3add27b..0a9fff7 100644 (file)
@@ -50,8 +50,8 @@ CONSTRUCTOR static bool glAttachProcess()
        #endif\r
 \r
        libEGL = loadLibrary(libEGL_lib);\r
-       egl::getCurrentContext = (egl::Context *(*)())getProcAddress(libEGL, "eglGetCurrentContext");\r
-       egl::getCurrentDisplay = (egl::Display *(*)())getProcAddress(libEGL, "eglGetCurrentDisplay");\r
+       egl::getCurrentContext = (egl::Context *(*)())getProcAddress(libEGL, "clientGetCurrentContext");\r
+       egl::getCurrentDisplay = (egl::Display *(*)())getProcAddress(libEGL, "clientGetCurrentDisplay");\r
 \r
     return libEGL != 0;\r
 }\r