Fix flakiness in EGL surface multithread tests.
This moves the surface acquisition to inside the scoped lock.
This should fix the flakiness we see on the linux-tsan-test
bot.
Bug: angleproject:7791
Change-Id: Idcc0f3c9d6e172b446f10c32bf6fb911fd887658
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4051622
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
diff --git a/src/libGLESv2/egl_ext_stubs.cpp b/src/libGLESv2/egl_ext_stubs.cpp
index 09a8b28..464441a 100644
--- a/src/libGLESv2/egl_ext_stubs.cpp
+++ b/src/libGLESv2/egl_ext_stubs.cpp
@@ -641,6 +641,7 @@
egl::Display *dpyPacked = PackParam<egl::Display *>(dpy);
SurfaceID surfacePacked = PackParam<SurfaceID>(surface);
Thread *thread = egl::GetCurrentThread();
+ Surface *surfacePtr = nullptr;
{
ANGLE_SCOPED_GLOBAL_LOCK();
@@ -652,8 +653,9 @@
ANGLE_EGL_TRY_RETURN(thread, dpyPacked->prepareForCall(), "eglPrepareSwapBuffersANGLE",
GetDisplayIfValid(dpyPacked), EGL_FALSE);
+
+ surfacePtr = dpyPacked->getSurface(surfacePacked);
}
- Surface *surfacePtr = dpyPacked->getSurface(surfacePacked);
ANGLE_EGL_TRY_RETURN(thread, surfacePtr->prepareSwap(thread->getContext()), "prepareSwap",
GetSurfaceIfValid(dpyPacked, surfacePacked), EGL_FALSE);