am ef7b9c7e: screenshots could stop working after camera was used

* commit 'ef7b9c7eac036cc1230c64821039d18f8cbd2c1c':
  screenshots could stop working after camera was used
This commit is contained in:
Mathias Agopian 2012-08-10 15:27:01 -07:00 committed by Android Git Automerger
commit f8aa5d8b92
2 changed files with 7 additions and 3 deletions

View File

@ -244,6 +244,7 @@ void DisplayDevice::makeCurrent(const sp<const DisplayDevice>& hw, EGLContext ct
void DisplayDevice::setVisibleLayersSortedByZ(const Vector< sp<LayerBase> >& layers) { void DisplayDevice::setVisibleLayersSortedByZ(const Vector< sp<LayerBase> >& layers) {
mVisibleLayersSortedByZ = layers; mVisibleLayersSortedByZ = layers;
mSecureLayerVisible = false;
size_t count = layers.size(); size_t count = layers.size();
for (size_t i=0 ; i<count ; i++) { for (size_t i=0 ; i<count ; i++) {
if (layers[i]->isSecure()) { if (layers[i]->isSecure()) {

View File

@ -2095,6 +2095,7 @@ status_t SurfaceFlinger::captureScreenImplLocked(DisplayID dpy,
// only one display supported for now // only one display supported for now
if (CC_UNLIKELY(uint32_t(dpy) >= DISPLAY_COUNT)) { if (CC_UNLIKELY(uint32_t(dpy) >= DISPLAY_COUNT)) {
ALOGE("invalid display %d", dpy);
return BAD_VALUE; return BAD_VALUE;
} }
@ -2109,10 +2110,12 @@ status_t SurfaceFlinger::captureScreenImplLocked(DisplayID dpy,
// if we have secure windows on this display, never allow the screen capture // if we have secure windows on this display, never allow the screen capture
if (hw->getSecureLayerVisible()) { if (hw->getSecureLayerVisible()) {
ALOGW("FB is protected: PERMISSION_DENIED");
return PERMISSION_DENIED; return PERMISSION_DENIED;
} }
if ((sw > hw_w) || (sh > hw_h)) { if ((sw > hw_w) || (sh > hw_h)) {
ALOGE("size mismatch (%d, %d) > (%d, %d)", sw, sh, hw_w, hw_h);
return BAD_VALUE; return BAD_VALUE;
} }
@ -2121,8 +2124,8 @@ status_t SurfaceFlinger::captureScreenImplLocked(DisplayID dpy,
const size_t size = sw * sh * 4; const size_t size = sw * sh * 4;
const bool filtering = sw != hw_w || sh != hw_h; const bool filtering = sw != hw_w || sh != hw_h;
//ALOGD("screenshot: sw=%d, sh=%d, minZ=%d, maxZ=%d", // ALOGD("screenshot: sw=%d, sh=%d, minZ=%d, maxZ=%d",
// sw, sh, minLayerZ, maxLayerZ); // sw, sh, minLayerZ, maxLayerZ);
// make sure to clear all GL error flags // make sure to clear all GL error flags
while ( glGetError() != GL_NO_ERROR ) ; while ( glGetError() != GL_NO_ERROR ) ;
@ -2209,7 +2212,7 @@ status_t SurfaceFlinger::captureScreenImplLocked(DisplayID dpy,
hw->compositionComplete(); hw->compositionComplete();
// ALOGD("screenshot: result = %s", result<0 ? strerror(result) : "OK"); // ALOGD("screenshot: result = %s", result<0 ? strerror(result) : "OK");
return result; return result;
} }