* commit 'f00c34babbaacd3b9f27e1a447979a061cab629f': reset GL viewport and project when caputring the screen
This commit is contained in:
commit
8321181496
@ -259,18 +259,22 @@ EGLBoolean DisplayDevice::makeCurrent(EGLDisplay dpy,
|
|||||||
if (sur != hw->mSurface) {
|
if (sur != hw->mSurface) {
|
||||||
result = eglMakeCurrent(dpy, hw->mSurface, hw->mSurface, ctx);
|
result = eglMakeCurrent(dpy, hw->mSurface, hw->mSurface, ctx);
|
||||||
if (result == EGL_TRUE) {
|
if (result == EGL_TRUE) {
|
||||||
GLsizei w = hw->mDisplayWidth;
|
setViewportAndProjection(hw);
|
||||||
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
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return result;
|
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) {
|
void DisplayDevice::setVisibleLayersSortedByZ(const Vector< sp<LayerBase> >& layers) {
|
||||||
|
@ -125,6 +125,8 @@ public:
|
|||||||
static EGLBoolean makeCurrent(EGLDisplay dpy,
|
static EGLBoolean makeCurrent(EGLDisplay dpy,
|
||||||
const sp<const DisplayDevice>& hw, EGLContext ctx);
|
const sp<const DisplayDevice>& hw, EGLContext ctx);
|
||||||
|
|
||||||
|
static void setViewportAndProjection(const sp<const DisplayDevice>& hw);
|
||||||
|
|
||||||
/* ------------------------------------------------------------------------
|
/* ------------------------------------------------------------------------
|
||||||
* blank / unblank management
|
* blank / unblank management
|
||||||
*/
|
*/
|
||||||
|
@ -2510,6 +2510,8 @@ status_t SurfaceFlinger::renderScreenToTextureLocked(uint32_t layerStack,
|
|||||||
glFramebufferTexture2DOES(GL_FRAMEBUFFER_OES,
|
glFramebufferTexture2DOES(GL_FRAMEBUFFER_OES,
|
||||||
GL_COLOR_ATTACHMENT0_OES, GL_TEXTURE_2D, tname, 0);
|
GL_COLOR_ATTACHMENT0_OES, GL_TEXTURE_2D, tname, 0);
|
||||||
|
|
||||||
|
DisplayDevice::setViewportAndProjection(hw);
|
||||||
|
|
||||||
// redraw the screen entirely...
|
// redraw the screen entirely...
|
||||||
glDisable(GL_TEXTURE_EXTERNAL_OES);
|
glDisable(GL_TEXTURE_EXTERNAL_OES);
|
||||||
glDisable(GL_TEXTURE_2D);
|
glDisable(GL_TEXTURE_2D);
|
||||||
|
Loading…
Reference in New Issue
Block a user