egl: Do not call drv->Initialize with global mutex locked.
diff --git a/src/egl/main/egldriver.c b/src/egl/main/egldriver.c
index 71d2ba0..f3a6940 100644
--- a/src/egl/main/egldriver.c
+++ b/src/egl/main/egldriver.c
@@ -460,6 +460,7 @@
 _eglLoadDefaultDriver(EGLDisplay dpy, EGLint *major, EGLint *minor)
 {
    _EGLDriver *drv = NULL;
+   EGLBoolean ok;
    int i;
 
    _eglLockMutex(_eglGlobal.Mutex);
@@ -470,10 +471,15 @@
       if (_eglGlobal.NumDrivers == 0)
 	 continue;
       drv = _eglGlobal.Drivers[0];
-      if (drv->API.Initialize(drv, dpy, major, minor))
-	 break;
+
+      _eglUnlockMutex(_eglGlobal.Mutex);
+      ok = drv->API.Initialize(drv, dpy, major, minor);
+      _eglLockMutex(_eglGlobal.Mutex);
+      if (ok)
+         break;
+
       _eglUnloadDrivers();
-   }      
+   }
 
    _eglUnlockMutex(_eglGlobal.Mutex);