Avoid resetting the EGL error code on client context retrieval.
BUG=18208531
Change-Id: I0246a6fcfdeefd8c84a28c3d86723d50d3f0cbac
diff --git a/src/OpenGL/libEGL/libEGL.def b/src/OpenGL/libEGL/libEGL.def
index 71a5e67..8b4caf5 100644
--- a/src/OpenGL/libEGL/libEGL.def
+++ b/src/OpenGL/libEGL/libEGL.def
@@ -33,4 +33,8 @@
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
diff --git a/src/OpenGL/libEGL/main.cpp b/src/OpenGL/libEGL/main.cpp
index 2243fd8..80882ce 100644
--- a/src/OpenGL/libEGL/main.cpp
+++ b/src/OpenGL/libEGL/main.cpp
@@ -255,7 +255,7 @@
current->context = ctx;
}
-EGLDisplay getCurrentContext()
+EGLContext getCurrentContext()
{
Current *current = eglGetCurrent();
@@ -318,6 +318,19 @@
}
}
+extern "C"
+{
+EGLContext clientGetCurrentContext()
+{
+ return egl::getCurrentContext();
+}
+
+EGLContext clientGetCurrentDisplay()
+{
+ return egl::getCurrentDisplay();
+}
+}
+
namespace es1
{
egl::Context *(*createContext)(const egl::Config *config, const egl::Context *shareContext) = 0;
diff --git a/src/OpenGL/libGLES_CM/main.cpp b/src/OpenGL/libGLES_CM/main.cpp
index dd18858..8c0558d 100644
--- a/src/OpenGL/libGLES_CM/main.cpp
+++ b/src/OpenGL/libGLES_CM/main.cpp
@@ -50,8 +50,8 @@
#endif
libEGL = loadLibrary(libEGL_lib);
- egl::getCurrentContext = (egl::Context *(*)())getProcAddress(libEGL, "eglGetCurrentContext");
- egl::getCurrentDisplay = (egl::Display *(*)())getProcAddress(libEGL, "eglGetCurrentDisplay");
+ egl::getCurrentContext = (egl::Context *(*)())getProcAddress(libEGL, "clientGetCurrentContext");
+ egl::getCurrentDisplay = (egl::Display *(*)())getProcAddress(libEGL, "clientGetCurrentDisplay");
return libEGL != 0;
}
diff --git a/src/OpenGL/libGLESv2/main.cpp b/src/OpenGL/libGLESv2/main.cpp
index 6252cf8..7d34bdd 100644
--- a/src/OpenGL/libGLESv2/main.cpp
+++ b/src/OpenGL/libGLESv2/main.cpp
@@ -50,8 +50,8 @@
#endif
libEGL = loadLibrary(libEGL_lib);
- egl::getCurrentContext = (egl::Context *(*)())getProcAddress(libEGL, "eglGetCurrentContext");
- egl::getCurrentDisplay = (egl::Display *(*)())getProcAddress(libEGL, "eglGetCurrentDisplay");
+ egl::getCurrentContext = (egl::Context *(*)())getProcAddress(libEGL, "clientGetCurrentContext");
+ egl::getCurrentDisplay = (egl::Display *(*)())getProcAddress(libEGL, "clientGetCurrentDisplay");
#if defined(_WIN32)
const char *libGLES_CM_lib[] = {"libGLES_CM.dll", "libGLES_CM_translator.dll"};
diff --git a/src/Radiance/libEGL/libEGL.cpp b/src/Radiance/libEGL/libEGL.cpp
index a726240..6f7903c 100644
--- a/src/Radiance/libEGL/libEGL.cpp
+++ b/src/Radiance/libEGL/libEGL.cpp
Binary files differ
diff --git a/src/Radiance/libEGL/libEGL.def b/src/Radiance/libEGL/libEGL.def
index 71a5e67..8b4caf5 100644
--- a/src/Radiance/libEGL/libEGL.def
+++ b/src/Radiance/libEGL/libEGL.def
@@ -33,4 +33,8 @@
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
diff --git a/src/Radiance/libEGL/main.cpp b/src/Radiance/libEGL/main.cpp
index 9f43f79..4c84130 100644
--- a/src/Radiance/libEGL/main.cpp
+++ b/src/Radiance/libEGL/main.cpp
@@ -237,7 +237,7 @@
current->context = ctx;
}
-EGLDisplay getCurrentContext()
+EGLContext getCurrentContext()
{
Current *current = eglGetCurrent();
@@ -300,6 +300,19 @@
}
}
+extern "C"
+{
+EGLContext clientGetCurrentContext()
+{
+ return egl::getCurrentContext();
+}
+
+EGLContext clientGetCurrentDisplay()
+{
+ return egl::getCurrentDisplay();
+}
+}
+
namespace rad
{
egl::Context *(*createContext)(const egl::Config *config, const egl::Context *shareContext) = 0;
diff --git a/src/Radiance/libRAD/main.cpp b/src/Radiance/libRAD/main.cpp
index 3add27b..0a9fff7 100644
--- a/src/Radiance/libRAD/main.cpp
+++ b/src/Radiance/libRAD/main.cpp
@@ -50,8 +50,8 @@
#endif
libEGL = loadLibrary(libEGL_lib);
- egl::getCurrentContext = (egl::Context *(*)())getProcAddress(libEGL, "eglGetCurrentContext");
- egl::getCurrentDisplay = (egl::Display *(*)())getProcAddress(libEGL, "eglGetCurrentDisplay");
+ egl::getCurrentContext = (egl::Context *(*)())getProcAddress(libEGL, "clientGetCurrentContext");
+ egl::getCurrentDisplay = (egl::Display *(*)())getProcAddress(libEGL, "clientGetCurrentDisplay");
return libEGL != 0;
}