Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 135e5899 authored by Mathias Agopian's avatar Mathias Agopian
Browse files

save/restore viewport properly when taking screenshot

Bug: 7241739
Change-Id: Iba8b9ffc75ab47fbc56169e65da26d96850a9297
parent bae92d0d
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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);
}

// ----------------------------------------------------------------------------
+3 −1
Original line number Diff line number Diff line
@@ -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);