reset GL viewport and project when caputring the screen

Bug: 7241739
Change-Id: I3bb5214b070384de9be2026647865c6c236a4331
diff --git a/services/surfaceflinger/DisplayDevice.cpp b/services/surfaceflinger/DisplayDevice.cpp
index 47dd073..f3acbc5 100644
--- a/services/surfaceflinger/DisplayDevice.cpp
+++ b/services/surfaceflinger/DisplayDevice.cpp
@@ -259,18 +259,22 @@
     if (sur != hw->mSurface) {
         result = eglMakeCurrent(dpy, hw->mSurface, hw->mSurface, ctx);
         if (result == EGL_TRUE) {
-            GLsizei w = hw->mDisplayWidth;
-            GLsizei h = hw->mDisplayHeight;
-            glViewport(0, 0, w, h);
-            glMatrixMode(GL_PROJECTION);
-            glLoadIdentity();
-            // put the origin in the left-bottom corner
-            glOrthof(0, w, 0, h, 0, 1); // l=0, r=w ; b=0, t=h
+            setViewportAndProjection(hw);
         }
     }
     return result;
 }
 
+void DisplayDevice::setViewportAndProjection(const sp<const DisplayDevice>& hw) {
+    GLsizei w = hw->mDisplayWidth;
+    GLsizei h = hw->mDisplayHeight;
+    glViewport(0, 0, w, h);
+    glMatrixMode(GL_PROJECTION);
+    glLoadIdentity();
+    // put the origin in the left-bottom corner
+    glOrthof(0, w, 0, h, 0, 1); // l=0, r=w ; b=0, t=h
+}
+
 // ----------------------------------------------------------------------------
 
 void DisplayDevice::setVisibleLayersSortedByZ(const Vector< sp<LayerBase> >& layers) {
diff --git a/services/surfaceflinger/DisplayDevice.h b/services/surfaceflinger/DisplayDevice.h
index 1d77154..058680b 100644
--- a/services/surfaceflinger/DisplayDevice.h
+++ b/services/surfaceflinger/DisplayDevice.h
@@ -125,6 +125,8 @@
     static EGLBoolean makeCurrent(EGLDisplay dpy,
             const sp<const DisplayDevice>& hw, EGLContext ctx);
 
+    static void setViewportAndProjection(const sp<const DisplayDevice>& hw);
+
     /* ------------------------------------------------------------------------
      * blank / unblank management
      */
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp
index 8cfaa31..eea0e6b 100644
--- a/services/surfaceflinger/SurfaceFlinger.cpp
+++ b/services/surfaceflinger/SurfaceFlinger.cpp
@@ -2510,6 +2510,8 @@
     glFramebufferTexture2DOES(GL_FRAMEBUFFER_OES,
             GL_COLOR_ATTACHMENT0_OES, GL_TEXTURE_2D, tname, 0);
 
+    DisplayDevice::setViewportAndProjection(hw);
+
     // redraw the screen entirely...
     glDisable(GL_TEXTURE_EXTERNAL_OES);
     glDisable(GL_TEXTURE_2D);