Fix a multithreading bug in libagl's EGL.
The bug caused libagl to return 0 from eglGetError if an EGL error value (including EGL_SUCCESS) was set on a different thread but not yet on the current thread. Bug: 3403756 Change-Id: Ifd965091d116745c2e22c121151ade9e78eb14c6
This commit is contained in:
parent
a7442c9587
commit
2076f35549
@ -82,6 +82,11 @@ static GLint getError() {
|
||||
if (ggl_unlikely(gEGLErrorKey == -1))
|
||||
return EGL_SUCCESS;
|
||||
GLint error = (GLint)pthread_getspecific(gEGLErrorKey);
|
||||
if (error == 0) {
|
||||
// The TLS key has been created by another thread, but the value for
|
||||
// this thread has not been initialized.
|
||||
return EGL_SUCCESS;
|
||||
}
|
||||
pthread_setspecific(gEGLErrorKey, (void*)EGL_SUCCESS);
|
||||
return error;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user