Loading services/surfaceflinger/LayerBase.cpp +5 −42 Original line number Diff line number Diff line Loading @@ -232,6 +232,8 @@ void LayerBase::validateVisibility(const Transform& planeTransform) uint32_t w = s.w; uint32_t h = s.h; mNumVertices = 4; tr.transform(mVertices[0], 0, 0); tr.transform(mVertices[1], 0, h); tr.transform(mVertices[2], w, h); Loading Loading @@ -268,27 +270,6 @@ void LayerBase::unlockPageFlip( const Transform& planeTransform, Region& outDirtyRegion) { } void LayerBase::drawRegion(const Region& reg) const { Region::const_iterator it = reg.begin(); Region::const_iterator const end = reg.end(); if (it != end) { Rect r; const DisplayHardware& hw(graphicPlane(0).displayHardware()); const int32_t fbWidth = hw.getWidth(); const int32_t fbHeight = hw.getHeight(); const GLshort vertices[][2] = { { 0, 0 }, { fbWidth, 0 }, { fbWidth, fbHeight }, { 0, fbHeight } }; glVertexPointer(2, GL_SHORT, 0, vertices); while (it != end) { const Rect& r = *it++; const GLint sy = fbHeight - (r.top + r.height()); glScissor(r.left, sy, r.width(), r.height()); glDrawArrays(GL_TRIANGLE_FAN, 0, 4); } } } void LayerBase::setGeometry(hwc_layer_t* hwcl) { hwcl->compositionType = HWC_FRAMEBUFFER; Loading Loading @@ -345,9 +326,6 @@ bool LayerBase::getFiltering() const void LayerBase::draw(const Region& clip) const { // reset GL state glEnable(GL_SCISSOR_TEST); onDraw(clip); } Loading @@ -371,16 +349,8 @@ void LayerBase::clearWithOpenGL(const Region& clip, GLclampf red, glDisable(GL_TEXTURE_2D); glDisable(GL_BLEND); Region::const_iterator it = clip.begin(); Region::const_iterator const end = clip.end(); glEnable(GL_SCISSOR_TEST); glVertexPointer(2, GL_FLOAT, 0, mVertices); while (it != end) { const Rect& r = *it++; const GLint sy = fbHeight - (r.top + r.height()); glScissor(r.left, sy, r.width(), r.height()); glDrawArrays(GL_TRIANGLE_FAN, 0, 4); } glDrawArrays(GL_TRIANGLE_FAN, 0, mNumVertices); } void LayerBase::clearWithOpenGL(const Region& clip) const Loading Loading @@ -434,15 +404,8 @@ void LayerBase::drawWithOpenGL(const Region& clip) const glEnableClientState(GL_TEXTURE_COORD_ARRAY); glVertexPointer(2, GL_FLOAT, 0, mVertices); glTexCoordPointer(2, GL_FLOAT, 0, texCoords); glDrawArrays(GL_TRIANGLE_FAN, 0, mNumVertices); Region::const_iterator it = clip.begin(); Region::const_iterator const end = clip.end(); while (it != end) { const Rect& r = *it++; const GLint sy = fbHeight - (r.top + r.height()); glScissor(r.left, sy, r.width(), r.height()); glDrawArrays(GL_TRIANGLE_FAN, 0, 4); } glDisableClientState(GL_TEXTURE_COORD_ARRAY); glDisable(GL_BLEND); } Loading services/surfaceflinger/LayerBase.h +1 −1 Original line number Diff line number Diff line Loading @@ -100,7 +100,6 @@ public: uint32_t setTransactionFlags(uint32_t flags); Rect visibleBounds() const; void drawRegion(const Region& reg) const; virtual sp<LayerBaseClient> getLayerBaseClient() const { return 0; } virtual sp<Layer> getLayer() const { return 0; } Loading Loading @@ -260,6 +259,7 @@ protected: int32_t mPlaneOrientation; Transform mTransform; GLfloat mVertices[4][2]; size_t mNumVertices; Rect mTransformedBounds; // these are protected by an external lock Loading services/surfaceflinger/LayerDim.cpp +2 −9 Original line number Diff line number Diff line Loading @@ -43,9 +43,7 @@ LayerDim::~LayerDim() void LayerDim::onDraw(const Region& clip) const { const State& s(drawingState()); Region::const_iterator it = clip.begin(); Region::const_iterator const end = clip.end(); if (s.alpha>0 && (it != end)) { if (s.alpha>0) { const DisplayHardware& hw(graphicPlane(0).displayHardware()); const GLfloat alpha = s.alpha/255.0f; const uint32_t fbHeight = hw.getHeight(); Loading @@ -62,13 +60,8 @@ void LayerDim::onDraw(const Region& clip) const glColor4f(0, 0, 0, alpha); glVertexPointer(2, GL_FLOAT, 0, mVertices); while (it != end) { const Rect& r = *it++; const GLint sy = fbHeight - (r.top + r.height()); glScissor(r.left, sy, r.width(), r.height()); glDrawArrays(GL_TRIANGLE_FAN, 0, 4); } glDisable(GL_BLEND); glDisableClientState(GL_TEXTURE_COORD_ARRAY); } Loading services/surfaceflinger/LayerScreenshot.cpp +2 −10 Original line number Diff line number Diff line Loading @@ -109,9 +109,7 @@ uint32_t LayerScreenshot::doTransaction(uint32_t flags) void LayerScreenshot::onDraw(const Region& clip) const { const State& s(drawingState()); Region::const_iterator it = clip.begin(); Region::const_iterator const end = clip.end(); if (s.alpha>0 && (it != end)) { if (s.alpha>0) { const DisplayHardware& hw(graphicPlane(0).displayHardware()); const GLfloat alpha = s.alpha/255.0f; const uint32_t fbHeight = hw.getHeight(); Loading @@ -137,13 +135,7 @@ void LayerScreenshot::onDraw(const Region& clip) const glEnableClientState(GL_TEXTURE_COORD_ARRAY); glTexCoordPointer(2, GL_FLOAT, 0, mTexCoords); glVertexPointer(2, GL_FLOAT, 0, mVertices); while (it != end) { const Rect& r = *it++; const GLint sy = fbHeight - (r.top + r.height()); glScissor(r.left, sy, r.width(), r.height()); glDrawArrays(GL_TRIANGLE_FAN, 0, 4); } glDrawArrays(GL_TRIANGLE_FAN, 0, mNumVertices); glDisable(GL_BLEND); glDisable(GL_TEXTURE_2D); Loading services/surfaceflinger/SurfaceFlinger.cpp +34 −44 Original line number Diff line number Diff line Loading @@ -265,7 +265,6 @@ status_t SurfaceFlinger::readyToRun() glPixelStorei(GL_UNPACK_ALIGNMENT, 4); glPixelStorei(GL_PACK_ALIGNMENT, 4); glEnableClientState(GL_VERTEX_ARRAY); glEnable(GL_SCISSOR_TEST); glShadeModel(GL_FLAT); glDisable(GL_DITHER); glDisable(GL_CULL_FACE); Loading Loading @@ -980,8 +979,6 @@ void SurfaceFlinger::debugFlashRegions() if (mDebugRegion > 1) usleep(mDebugRegion * 1000); glEnable(GL_SCISSOR_TEST); } void SurfaceFlinger::drawWormhole() const Loading @@ -990,53 +987,49 @@ void SurfaceFlinger::drawWormhole() const if (region.isEmpty()) return; const DisplayHardware& hw(graphicPlane(0).displayHardware()); const int32_t width = hw.getWidth(); const int32_t height = hw.getHeight(); glDisable(GL_TEXTURE_EXTERNAL_OES); glDisable(GL_BLEND); if (CC_LIKELY(!mDebugBackground)) { glClearColor(0,0,0,0); Region::const_iterator it = region.begin(); Region::const_iterator const end = region.end(); while (it != end) { const Rect& r = *it++; const GLint sy = height - (r.top + r.height()); glScissor(r.left, sy, r.width(), r.height()); glClear(GL_COLOR_BUFFER_BIT); } glDisable(GL_TEXTURE_2D); glColor4f(0,0,0,0); } else { const GLshort vertices[][2] = { { 0, 0 }, { width, 0 }, { width, height }, { 0, height } }; const GLshort tcoords[][2] = { { 0, 0 }, { 1, 0 }, { 1, 1 }, { 0, 1 } }; glVertexPointer(2, GL_SHORT, 0, vertices); glTexCoordPointer(2, GL_SHORT, 0, tcoords); const DisplayHardware& hw(graphicPlane(0).displayHardware()); const int32_t width = hw.getWidth(); const int32_t height = hw.getHeight(); const GLfloat tcoords[][2] = { { 0, 0 }, { 1, 0 }, { 1, 1 }, { 0, 1 } }; glTexCoordPointer(2, GL_FLOAT, 0, tcoords); glEnableClientState(GL_TEXTURE_COORD_ARRAY); glDisable(GL_TEXTURE_EXTERNAL_OES); glEnable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D, mWormholeTexName); glTexEnvx(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); glMatrixMode(GL_TEXTURE); glLoadIdentity(); glDisable(GL_BLEND); glScalef(width*(1.0f/32.0f), height*(1.0f/32.0f), 1); } GLfloat vertices[4][2]; glVertexPointer(2, GL_FLOAT, 0, vertices); Region::const_iterator it = region.begin(); Region::const_iterator const end = region.end(); while (it != end) { const Rect& r = *it++; const GLint sy = height - (r.top + r.height()); glScissor(r.left, sy, r.width(), r.height()); vertices[0][0] = r.left; vertices[0][1] = r.top; vertices[1][0] = r.right; vertices[1][1] = r.top; vertices[2][0] = r.right; vertices[2][1] = r.bottom; vertices[3][0] = r.left; vertices[3][1] = r.bottom; glDrawArrays(GL_TRIANGLE_FAN, 0, 4); } glDisableClientState(GL_TEXTURE_COORD_ARRAY); glDisable(GL_TEXTURE_2D); glLoadIdentity(); glMatrixMode(GL_MODELVIEW); } } status_t SurfaceFlinger::addLayer(const sp<LayerBase>& layer) { Loading Loading @@ -1841,7 +1834,6 @@ status_t SurfaceFlinger::renderScreenToTextureLocked(DisplayID dpy, glDisable(GL_SCISSOR_TEST); glClearColor(0,0,0,1); glClear(GL_COLOR_BUFFER_BIT); glEnable(GL_SCISSOR_TEST); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); const Vector< sp<LayerBase> >& layers(mVisibleLayersSortedByZ); Loading Loading @@ -2026,11 +2018,11 @@ status_t SurfaceFlinger::electronBeamOffAnimationImplLocked() } glColorMask(1,1,1,1); glEnable(GL_SCISSOR_TEST); glDisableClientState(GL_TEXTURE_COORD_ARRAY); glDeleteTextures(1, &tname); glDisable(GL_TEXTURE_2D); glDisable(GL_BLEND); glDisable(GL_SCISSOR_TEST); return NO_ERROR; } Loading Loading @@ -2169,11 +2161,11 @@ status_t SurfaceFlinger::electronBeamOnAnimationImplLocked() } glColorMask(1,1,1,1); glEnable(GL_SCISSOR_TEST); glDisableClientState(GL_TEXTURE_COORD_ARRAY); glDeleteTextures(1, &tname); glDisable(GL_TEXTURE_2D); glDisable(GL_BLEND); glDisable(GL_SCISSOR_TEST); return NO_ERROR; } Loading Loading @@ -2203,7 +2195,6 @@ status_t SurfaceFlinger::turnElectronBeamOffImplLocked(int32_t mode) glClearColor(0,0,0,1); glDisable(GL_SCISSOR_TEST); glClear(GL_COLOR_BUFFER_BIT); glEnable(GL_SCISSOR_TEST); hw.flip( Region(hw.bounds()) ); return NO_ERROR; Loading Loading @@ -2341,7 +2332,6 @@ status_t SurfaceFlinger::captureScreenImplLocked(DisplayID dpy, // invert everything, b/c glReadPixel() below will invert the FB glViewport(0, 0, sw, sh); glScissor(0, 0, sw, sh); glEnable(GL_SCISSOR_TEST); glMatrixMode(GL_PROJECTION); glPushMatrix(); glLoadIdentity(); Loading Loading @@ -2394,7 +2384,7 @@ status_t SurfaceFlinger::captureScreenImplLocked(DisplayID dpy, result = NO_MEMORY; } } glEnable(GL_SCISSOR_TEST); glDisable(GL_SCISSOR_TEST); glViewport(0, 0, hw_w, hw_h); glMatrixMode(GL_PROJECTION); glPopMatrix(); Loading Loading
services/surfaceflinger/LayerBase.cpp +5 −42 Original line number Diff line number Diff line Loading @@ -232,6 +232,8 @@ void LayerBase::validateVisibility(const Transform& planeTransform) uint32_t w = s.w; uint32_t h = s.h; mNumVertices = 4; tr.transform(mVertices[0], 0, 0); tr.transform(mVertices[1], 0, h); tr.transform(mVertices[2], w, h); Loading Loading @@ -268,27 +270,6 @@ void LayerBase::unlockPageFlip( const Transform& planeTransform, Region& outDirtyRegion) { } void LayerBase::drawRegion(const Region& reg) const { Region::const_iterator it = reg.begin(); Region::const_iterator const end = reg.end(); if (it != end) { Rect r; const DisplayHardware& hw(graphicPlane(0).displayHardware()); const int32_t fbWidth = hw.getWidth(); const int32_t fbHeight = hw.getHeight(); const GLshort vertices[][2] = { { 0, 0 }, { fbWidth, 0 }, { fbWidth, fbHeight }, { 0, fbHeight } }; glVertexPointer(2, GL_SHORT, 0, vertices); while (it != end) { const Rect& r = *it++; const GLint sy = fbHeight - (r.top + r.height()); glScissor(r.left, sy, r.width(), r.height()); glDrawArrays(GL_TRIANGLE_FAN, 0, 4); } } } void LayerBase::setGeometry(hwc_layer_t* hwcl) { hwcl->compositionType = HWC_FRAMEBUFFER; Loading Loading @@ -345,9 +326,6 @@ bool LayerBase::getFiltering() const void LayerBase::draw(const Region& clip) const { // reset GL state glEnable(GL_SCISSOR_TEST); onDraw(clip); } Loading @@ -371,16 +349,8 @@ void LayerBase::clearWithOpenGL(const Region& clip, GLclampf red, glDisable(GL_TEXTURE_2D); glDisable(GL_BLEND); Region::const_iterator it = clip.begin(); Region::const_iterator const end = clip.end(); glEnable(GL_SCISSOR_TEST); glVertexPointer(2, GL_FLOAT, 0, mVertices); while (it != end) { const Rect& r = *it++; const GLint sy = fbHeight - (r.top + r.height()); glScissor(r.left, sy, r.width(), r.height()); glDrawArrays(GL_TRIANGLE_FAN, 0, 4); } glDrawArrays(GL_TRIANGLE_FAN, 0, mNumVertices); } void LayerBase::clearWithOpenGL(const Region& clip) const Loading Loading @@ -434,15 +404,8 @@ void LayerBase::drawWithOpenGL(const Region& clip) const glEnableClientState(GL_TEXTURE_COORD_ARRAY); glVertexPointer(2, GL_FLOAT, 0, mVertices); glTexCoordPointer(2, GL_FLOAT, 0, texCoords); glDrawArrays(GL_TRIANGLE_FAN, 0, mNumVertices); Region::const_iterator it = clip.begin(); Region::const_iterator const end = clip.end(); while (it != end) { const Rect& r = *it++; const GLint sy = fbHeight - (r.top + r.height()); glScissor(r.left, sy, r.width(), r.height()); glDrawArrays(GL_TRIANGLE_FAN, 0, 4); } glDisableClientState(GL_TEXTURE_COORD_ARRAY); glDisable(GL_BLEND); } Loading
services/surfaceflinger/LayerBase.h +1 −1 Original line number Diff line number Diff line Loading @@ -100,7 +100,6 @@ public: uint32_t setTransactionFlags(uint32_t flags); Rect visibleBounds() const; void drawRegion(const Region& reg) const; virtual sp<LayerBaseClient> getLayerBaseClient() const { return 0; } virtual sp<Layer> getLayer() const { return 0; } Loading Loading @@ -260,6 +259,7 @@ protected: int32_t mPlaneOrientation; Transform mTransform; GLfloat mVertices[4][2]; size_t mNumVertices; Rect mTransformedBounds; // these are protected by an external lock Loading
services/surfaceflinger/LayerDim.cpp +2 −9 Original line number Diff line number Diff line Loading @@ -43,9 +43,7 @@ LayerDim::~LayerDim() void LayerDim::onDraw(const Region& clip) const { const State& s(drawingState()); Region::const_iterator it = clip.begin(); Region::const_iterator const end = clip.end(); if (s.alpha>0 && (it != end)) { if (s.alpha>0) { const DisplayHardware& hw(graphicPlane(0).displayHardware()); const GLfloat alpha = s.alpha/255.0f; const uint32_t fbHeight = hw.getHeight(); Loading @@ -62,13 +60,8 @@ void LayerDim::onDraw(const Region& clip) const glColor4f(0, 0, 0, alpha); glVertexPointer(2, GL_FLOAT, 0, mVertices); while (it != end) { const Rect& r = *it++; const GLint sy = fbHeight - (r.top + r.height()); glScissor(r.left, sy, r.width(), r.height()); glDrawArrays(GL_TRIANGLE_FAN, 0, 4); } glDisable(GL_BLEND); glDisableClientState(GL_TEXTURE_COORD_ARRAY); } Loading
services/surfaceflinger/LayerScreenshot.cpp +2 −10 Original line number Diff line number Diff line Loading @@ -109,9 +109,7 @@ uint32_t LayerScreenshot::doTransaction(uint32_t flags) void LayerScreenshot::onDraw(const Region& clip) const { const State& s(drawingState()); Region::const_iterator it = clip.begin(); Region::const_iterator const end = clip.end(); if (s.alpha>0 && (it != end)) { if (s.alpha>0) { const DisplayHardware& hw(graphicPlane(0).displayHardware()); const GLfloat alpha = s.alpha/255.0f; const uint32_t fbHeight = hw.getHeight(); Loading @@ -137,13 +135,7 @@ void LayerScreenshot::onDraw(const Region& clip) const glEnableClientState(GL_TEXTURE_COORD_ARRAY); glTexCoordPointer(2, GL_FLOAT, 0, mTexCoords); glVertexPointer(2, GL_FLOAT, 0, mVertices); while (it != end) { const Rect& r = *it++; const GLint sy = fbHeight - (r.top + r.height()); glScissor(r.left, sy, r.width(), r.height()); glDrawArrays(GL_TRIANGLE_FAN, 0, 4); } glDrawArrays(GL_TRIANGLE_FAN, 0, mNumVertices); glDisable(GL_BLEND); glDisable(GL_TEXTURE_2D); Loading
services/surfaceflinger/SurfaceFlinger.cpp +34 −44 Original line number Diff line number Diff line Loading @@ -265,7 +265,6 @@ status_t SurfaceFlinger::readyToRun() glPixelStorei(GL_UNPACK_ALIGNMENT, 4); glPixelStorei(GL_PACK_ALIGNMENT, 4); glEnableClientState(GL_VERTEX_ARRAY); glEnable(GL_SCISSOR_TEST); glShadeModel(GL_FLAT); glDisable(GL_DITHER); glDisable(GL_CULL_FACE); Loading Loading @@ -980,8 +979,6 @@ void SurfaceFlinger::debugFlashRegions() if (mDebugRegion > 1) usleep(mDebugRegion * 1000); glEnable(GL_SCISSOR_TEST); } void SurfaceFlinger::drawWormhole() const Loading @@ -990,53 +987,49 @@ void SurfaceFlinger::drawWormhole() const if (region.isEmpty()) return; const DisplayHardware& hw(graphicPlane(0).displayHardware()); const int32_t width = hw.getWidth(); const int32_t height = hw.getHeight(); glDisable(GL_TEXTURE_EXTERNAL_OES); glDisable(GL_BLEND); if (CC_LIKELY(!mDebugBackground)) { glClearColor(0,0,0,0); Region::const_iterator it = region.begin(); Region::const_iterator const end = region.end(); while (it != end) { const Rect& r = *it++; const GLint sy = height - (r.top + r.height()); glScissor(r.left, sy, r.width(), r.height()); glClear(GL_COLOR_BUFFER_BIT); } glDisable(GL_TEXTURE_2D); glColor4f(0,0,0,0); } else { const GLshort vertices[][2] = { { 0, 0 }, { width, 0 }, { width, height }, { 0, height } }; const GLshort tcoords[][2] = { { 0, 0 }, { 1, 0 }, { 1, 1 }, { 0, 1 } }; glVertexPointer(2, GL_SHORT, 0, vertices); glTexCoordPointer(2, GL_SHORT, 0, tcoords); const DisplayHardware& hw(graphicPlane(0).displayHardware()); const int32_t width = hw.getWidth(); const int32_t height = hw.getHeight(); const GLfloat tcoords[][2] = { { 0, 0 }, { 1, 0 }, { 1, 1 }, { 0, 1 } }; glTexCoordPointer(2, GL_FLOAT, 0, tcoords); glEnableClientState(GL_TEXTURE_COORD_ARRAY); glDisable(GL_TEXTURE_EXTERNAL_OES); glEnable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D, mWormholeTexName); glTexEnvx(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); glMatrixMode(GL_TEXTURE); glLoadIdentity(); glDisable(GL_BLEND); glScalef(width*(1.0f/32.0f), height*(1.0f/32.0f), 1); } GLfloat vertices[4][2]; glVertexPointer(2, GL_FLOAT, 0, vertices); Region::const_iterator it = region.begin(); Region::const_iterator const end = region.end(); while (it != end) { const Rect& r = *it++; const GLint sy = height - (r.top + r.height()); glScissor(r.left, sy, r.width(), r.height()); vertices[0][0] = r.left; vertices[0][1] = r.top; vertices[1][0] = r.right; vertices[1][1] = r.top; vertices[2][0] = r.right; vertices[2][1] = r.bottom; vertices[3][0] = r.left; vertices[3][1] = r.bottom; glDrawArrays(GL_TRIANGLE_FAN, 0, 4); } glDisableClientState(GL_TEXTURE_COORD_ARRAY); glDisable(GL_TEXTURE_2D); glLoadIdentity(); glMatrixMode(GL_MODELVIEW); } } status_t SurfaceFlinger::addLayer(const sp<LayerBase>& layer) { Loading Loading @@ -1841,7 +1834,6 @@ status_t SurfaceFlinger::renderScreenToTextureLocked(DisplayID dpy, glDisable(GL_SCISSOR_TEST); glClearColor(0,0,0,1); glClear(GL_COLOR_BUFFER_BIT); glEnable(GL_SCISSOR_TEST); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); const Vector< sp<LayerBase> >& layers(mVisibleLayersSortedByZ); Loading Loading @@ -2026,11 +2018,11 @@ status_t SurfaceFlinger::electronBeamOffAnimationImplLocked() } glColorMask(1,1,1,1); glEnable(GL_SCISSOR_TEST); glDisableClientState(GL_TEXTURE_COORD_ARRAY); glDeleteTextures(1, &tname); glDisable(GL_TEXTURE_2D); glDisable(GL_BLEND); glDisable(GL_SCISSOR_TEST); return NO_ERROR; } Loading Loading @@ -2169,11 +2161,11 @@ status_t SurfaceFlinger::electronBeamOnAnimationImplLocked() } glColorMask(1,1,1,1); glEnable(GL_SCISSOR_TEST); glDisableClientState(GL_TEXTURE_COORD_ARRAY); glDeleteTextures(1, &tname); glDisable(GL_TEXTURE_2D); glDisable(GL_BLEND); glDisable(GL_SCISSOR_TEST); return NO_ERROR; } Loading Loading @@ -2203,7 +2195,6 @@ status_t SurfaceFlinger::turnElectronBeamOffImplLocked(int32_t mode) glClearColor(0,0,0,1); glDisable(GL_SCISSOR_TEST); glClear(GL_COLOR_BUFFER_BIT); glEnable(GL_SCISSOR_TEST); hw.flip( Region(hw.bounds()) ); return NO_ERROR; Loading Loading @@ -2341,7 +2332,6 @@ status_t SurfaceFlinger::captureScreenImplLocked(DisplayID dpy, // invert everything, b/c glReadPixel() below will invert the FB glViewport(0, 0, sw, sh); glScissor(0, 0, sw, sh); glEnable(GL_SCISSOR_TEST); glMatrixMode(GL_PROJECTION); glPushMatrix(); glLoadIdentity(); Loading Loading @@ -2394,7 +2384,7 @@ status_t SurfaceFlinger::captureScreenImplLocked(DisplayID dpy, result = NO_MEMORY; } } glEnable(GL_SCISSOR_TEST); glDisable(GL_SCISSOR_TEST); glViewport(0, 0, hw_w, hw_h); glMatrixMode(GL_PROJECTION); glPopMatrix(); Loading