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