summaryrefslogtreecommitdiffstats
path: root/services
diff options
context:
space:
mode:
authorMathias Agopian <mathias@google.com>2012-09-30 16:43:20 -0700
committerMathias Agopian <mathias@google.com>2012-09-30 16:43:20 -0700
commit135e5899f70a67e62baaf6dbec7ba2ce611ca16a (patch)
tree0e83801bb331052c2d47fabfc156d625c1cc1132 /services
parentbae92d0d605e99a14731add4f11b72413b2835e5 (diff)
downloadframeworks_native-135e5899f70a67e62baaf6dbec7ba2ce611ca16a.zip
frameworks_native-135e5899f70a67e62baaf6dbec7ba2ce611ca16a.tar.gz
frameworks_native-135e5899f70a67e62baaf6dbec7ba2ce611ca16a.tar.bz2
save/restore viewport properly when taking screenshot
Bug: 7241739 Change-Id: Iba8b9ffc75ab47fbc56169e65da26d96850a9297
Diffstat (limited to 'services')
-rw-r--r--services/surfaceflinger/DisplayDevice.cpp1
-rw-r--r--services/surfaceflinger/SurfaceFlinger.cpp4
2 files changed, 4 insertions, 1 deletions
diff --git a/services/surfaceflinger/DisplayDevice.cpp b/services/surfaceflinger/DisplayDevice.cpp
index f3acbc5..ff1af83 100644
--- a/services/surfaceflinger/DisplayDevice.cpp
+++ b/services/surfaceflinger/DisplayDevice.cpp
@@ -273,6 +273,7 @@ void DisplayDevice::setViewportAndProjection(const sp<const DisplayDevice>& hw)
glLoadIdentity();
// put the origin in the left-bottom corner
glOrthof(0, w, 0, h, 0, 1); // l=0, r=w ; b=0, t=h
+ glMatrixMode(GL_MODELVIEW);
}
// ----------------------------------------------------------------------------
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp
index eea0e6b..a8d20bb 100644
--- a/services/surfaceflinger/SurfaceFlinger.cpp
+++ b/services/surfaceflinger/SurfaceFlinger.cpp
@@ -2597,6 +2597,8 @@ status_t SurfaceFlinger::captureScreenImplLocked(const sp<IBinder>& display,
if (status == GL_FRAMEBUFFER_COMPLETE_OES) {
// invert everything, b/c glReadPixel() below will invert the FB
+ GLint viewport[4];
+ glGetIntegerv(GL_VIEWPORT, viewport);
glViewport(0, 0, sw, sh);
glMatrixMode(GL_PROJECTION);
glPushMatrix();
@@ -2645,7 +2647,7 @@ status_t SurfaceFlinger::captureScreenImplLocked(const sp<IBinder>& display,
result = NO_MEMORY;
}
}
- glViewport(0, 0, hw_w, hw_h);
+ glViewport(viewport[0], viewport[1], viewport[2], viewport[3]);
glMatrixMode(GL_PROJECTION);
glPopMatrix();
glMatrixMode(GL_MODELVIEW);