fix "traceGpuCompletion" debug feature

eglCreateSyncKHR requires a call to glFlush which we were not doing.
fixed by moving the code above eglSwapBuffers(), which both
fixes the problem and gives us a slightly better idea of when
the GPU is done drawing.

Change-Id: Ic826ef1fe25a6247742c3d49d0cb69f4031e3593
diff --git a/opengl/libs/EGL/eglApi.cpp b/opengl/libs/EGL/eglApi.cpp
index f6bc069..9a214c2 100644
--- a/opengl/libs/EGL/eglApi.cpp
+++ b/opengl/libs/EGL/eglApi.cpp
@@ -960,6 +960,13 @@
 
     egl_surface_t const * const s = get_surface(draw);
 
+    if (CC_UNLIKELY(dp->traceGpuCompletion)) {
+        EGLSyncKHR sync = eglCreateSyncKHR(dpy, EGL_SYNC_FENCE_KHR, NULL);
+        if (sync != EGL_NO_SYNC_KHR) {
+            FrameCompletionThread::queueSync(sync);
+        }
+    }
+
     if (CC_UNLIKELY(dp->finishOnSwap)) {
         uint32_t pixel;
         egl_context_t * const c = get_context( egl_tls_t::getContext() );
@@ -970,19 +977,7 @@
         }
     }
 
-    EGLBoolean result = s->cnx->egl.eglSwapBuffers(dp->disp.dpy, s->surface);
-
-    if (CC_UNLIKELY(dp->traceGpuCompletion)) {
-        EGLSyncKHR sync = EGL_NO_SYNC_KHR;
-        {
-            sync = eglCreateSyncKHR(dpy, EGL_SYNC_FENCE_KHR, NULL);
-        }
-        if (sync != EGL_NO_SYNC_KHR) {
-            FrameCompletionThread::queueSync(sync);
-        }
-    }
-
-    return result;
+    return s->cnx->egl.eglSwapBuffers(dp->disp.dpy, s->surface);
 }
 
 EGLBoolean eglCopyBuffers(  EGLDisplay dpy, EGLSurface surface,