make sure EGL_ANDROID_swap_rectangle is actually supported before using it
diff --git a/libs/surfaceflinger/DisplayHardware/DisplayHardware.cpp b/libs/surfaceflinger/DisplayHardware/DisplayHardware.cpp
index ecd1202..3f607f6d 100644
--- a/libs/surfaceflinger/DisplayHardware/DisplayHardware.cpp
+++ b/libs/surfaceflinger/DisplayHardware/DisplayHardware.cpp
@@ -166,9 +166,17 @@
         }
     }
 
+    eglQuerySurface(display, surface, EGL_WIDTH,  &mWidth);
+    eglQuerySurface(display, surface, EGL_HEIGHT, &mHeight);
+
 #ifdef EGL_ANDROID_swap_rectangle    
     if (strstr(egl_extensions, "EGL_ANDROID_swap_rectangle")) {
-        mFlags |= SWAP_RECTANGLE;
+        if (eglSetSwapRectangleANDROID(display, surface,
+                0, 0, mWidth, mHeight) == EGL_TRUE) {
+            // This could fail if this extension is not supported by this
+            // specific surface (of config)
+            mFlags |= SWAP_RECTANGLE;
+        }
     }
     // when we have the choice between UPDATE_ON_DEMAND and SWAP_RECTANGLE
     // choose UPDATE_ON_DEMAND, which is more efficient
@@ -177,6 +185,8 @@
 #endif
     
 
+    LOGI("flags     : %08x", mFlags);
+    
     mDpiX = mNativeWindow->xdpi;
     mDpiY = mNativeWindow->ydpi;
     mRefreshRate = fbDev->fps; 
@@ -204,9 +214,6 @@
     context = eglCreateContext(display, config, NULL, NULL);
     //checkEGLErrors("eglCreateContext");
     
-    eglQuerySurface(display, surface, EGL_WIDTH, &mWidth);
-    eglQuerySurface(display, surface, EGL_HEIGHT, &mHeight);
-    
     
     /*
      * Gather OpenGL ES extensions