Loading services/surfaceflinger/Layer.cpp +34 −19 Original line number Diff line number Diff line Loading @@ -212,19 +212,6 @@ void Layer::setGeometry(hwc_layer_t* hwcl) } else { hwcl->transform = finalTransform; } } void Layer::setPerFrameData(hwc_layer_t* hwcl) { const sp<GraphicBuffer>& buffer(mActiveBuffer); if (buffer == NULL) { // this can happen if the client never drew into this layer yet, // or if we ran out of memory. In that case, don't let // HWC handle it. hwcl->flags |= HWC_SKIP_LAYER; hwcl->handle = NULL; } else { hwcl->handle = buffer->handle; } if (isCropped()) { hwcl->sourceCrop.left = mCurrentCrop.left; Loading @@ -232,6 +219,7 @@ void Layer::setPerFrameData(hwc_layer_t* hwcl) { hwcl->sourceCrop.right = mCurrentCrop.right; hwcl->sourceCrop.bottom = mCurrentCrop.bottom; } else { const sp<GraphicBuffer>& buffer(mActiveBuffer); hwcl->sourceCrop.left = 0; hwcl->sourceCrop.top = 0; if (buffer != NULL) { Loading @@ -244,6 +232,19 @@ void Layer::setPerFrameData(hwc_layer_t* hwcl) { } } void Layer::setPerFrameData(hwc_layer_t* hwcl) { const sp<GraphicBuffer>& buffer(mActiveBuffer); if (buffer == NULL) { // this can happen if the client never drew into this layer yet, // or if we ran out of memory. In that case, don't let // HWC handle it. hwcl->flags |= HWC_SKIP_LAYER; hwcl->handle = NULL; } else { hwcl->handle = buffer->handle; } } void Layer::onDraw(const Region& clip) const { if (CC_UNLIKELY(mActiveBuffer == 0)) { Loading Loading @@ -416,8 +417,7 @@ void Layer::lockPageFlip(bool& recomputeVisibleRegions) return; } mActiveBuffer = mSurfaceTexture->getCurrentBuffer(); mSurfaceTexture->getTransformMatrix(mTextureMatrix); sp<GraphicBuffer> newFrontBuffer(mSurfaceTexture->getCurrentBuffer()); const Rect crop(mSurfaceTexture->getCurrentCrop()); const uint32_t transform(mSurfaceTexture->getCurrentTransform()); Loading @@ -432,7 +432,23 @@ void Layer::lockPageFlip(bool& recomputeVisibleRegions) mFlinger->invalidateHwcGeometry(); } mCurrentOpacity = getOpacityForFormat(mActiveBuffer->format); GLfloat textureMatrix[16]; mSurfaceTexture->getTransformMatrix(textureMatrix); if (memcmp(textureMatrix, mTextureMatrix, sizeof(textureMatrix))) { memcpy(mTextureMatrix, textureMatrix, sizeof(textureMatrix)); mFlinger->invalidateHwcGeometry(); } uint32_t bufWidth = newFrontBuffer->getWidth(); uint32_t bufHeight = newFrontBuffer->getHeight(); if (mActiveBuffer != NULL) { if (bufWidth != uint32_t(mActiveBuffer->width) || bufHeight != uint32_t(mActiveBuffer->height)) { mFlinger->invalidateHwcGeometry(); } } mCurrentOpacity = getOpacityForFormat(newFrontBuffer->format); if (oldOpacity != isOpaque()) { recomputeVisibleRegions = true; } Loading @@ -446,15 +462,14 @@ void Layer::lockPageFlip(bool& recomputeVisibleRegions) // FIXME: mPostedDirtyRegion = dirty & bounds mPostedDirtyRegion.set(front.w, front.h); // update active buffer mActiveBuffer = newFrontBuffer; if ((front.w != front.requested_w) || (front.h != front.requested_h)) { // check that we received a buffer of the right size // (Take the buffer's orientation into account) sp<GraphicBuffer> newFrontBuffer(mActiveBuffer); uint32_t bufWidth = newFrontBuffer->getWidth(); uint32_t bufHeight = newFrontBuffer->getHeight(); if (mCurrentTransform & Transform::ROT_90) { swap(bufWidth, bufHeight); } Loading services/surfaceflinger/LayerBase.cpp +5 −4 Original line number Diff line number Diff line Loading @@ -335,17 +335,18 @@ void LayerBase::setGeometry(hwc_layer_t* hwcl) reinterpret_cast<hwc_rect_t const *>( visibleRegionScreen.getArray( &hwcl->visibleRegionScreen.numRects)); } void LayerBase::setPerFrameData(hwc_layer_t* hwcl) { hwcl->compositionType = HWC_FRAMEBUFFER; hwcl->handle = NULL; hwcl->sourceCrop.left = 0; hwcl->sourceCrop.top = 0; hwcl->sourceCrop.right = mTransformedBounds.width(); hwcl->sourceCrop.bottom = mTransformedBounds.height(); } void LayerBase::setPerFrameData(hwc_layer_t* hwcl) { hwcl->compositionType = HWC_FRAMEBUFFER; hwcl->handle = NULL; } void LayerBase::setFiltering(bool filtering) { mFiltering = filtering; Loading Loading
services/surfaceflinger/Layer.cpp +34 −19 Original line number Diff line number Diff line Loading @@ -212,19 +212,6 @@ void Layer::setGeometry(hwc_layer_t* hwcl) } else { hwcl->transform = finalTransform; } } void Layer::setPerFrameData(hwc_layer_t* hwcl) { const sp<GraphicBuffer>& buffer(mActiveBuffer); if (buffer == NULL) { // this can happen if the client never drew into this layer yet, // or if we ran out of memory. In that case, don't let // HWC handle it. hwcl->flags |= HWC_SKIP_LAYER; hwcl->handle = NULL; } else { hwcl->handle = buffer->handle; } if (isCropped()) { hwcl->sourceCrop.left = mCurrentCrop.left; Loading @@ -232,6 +219,7 @@ void Layer::setPerFrameData(hwc_layer_t* hwcl) { hwcl->sourceCrop.right = mCurrentCrop.right; hwcl->sourceCrop.bottom = mCurrentCrop.bottom; } else { const sp<GraphicBuffer>& buffer(mActiveBuffer); hwcl->sourceCrop.left = 0; hwcl->sourceCrop.top = 0; if (buffer != NULL) { Loading @@ -244,6 +232,19 @@ void Layer::setPerFrameData(hwc_layer_t* hwcl) { } } void Layer::setPerFrameData(hwc_layer_t* hwcl) { const sp<GraphicBuffer>& buffer(mActiveBuffer); if (buffer == NULL) { // this can happen if the client never drew into this layer yet, // or if we ran out of memory. In that case, don't let // HWC handle it. hwcl->flags |= HWC_SKIP_LAYER; hwcl->handle = NULL; } else { hwcl->handle = buffer->handle; } } void Layer::onDraw(const Region& clip) const { if (CC_UNLIKELY(mActiveBuffer == 0)) { Loading Loading @@ -416,8 +417,7 @@ void Layer::lockPageFlip(bool& recomputeVisibleRegions) return; } mActiveBuffer = mSurfaceTexture->getCurrentBuffer(); mSurfaceTexture->getTransformMatrix(mTextureMatrix); sp<GraphicBuffer> newFrontBuffer(mSurfaceTexture->getCurrentBuffer()); const Rect crop(mSurfaceTexture->getCurrentCrop()); const uint32_t transform(mSurfaceTexture->getCurrentTransform()); Loading @@ -432,7 +432,23 @@ void Layer::lockPageFlip(bool& recomputeVisibleRegions) mFlinger->invalidateHwcGeometry(); } mCurrentOpacity = getOpacityForFormat(mActiveBuffer->format); GLfloat textureMatrix[16]; mSurfaceTexture->getTransformMatrix(textureMatrix); if (memcmp(textureMatrix, mTextureMatrix, sizeof(textureMatrix))) { memcpy(mTextureMatrix, textureMatrix, sizeof(textureMatrix)); mFlinger->invalidateHwcGeometry(); } uint32_t bufWidth = newFrontBuffer->getWidth(); uint32_t bufHeight = newFrontBuffer->getHeight(); if (mActiveBuffer != NULL) { if (bufWidth != uint32_t(mActiveBuffer->width) || bufHeight != uint32_t(mActiveBuffer->height)) { mFlinger->invalidateHwcGeometry(); } } mCurrentOpacity = getOpacityForFormat(newFrontBuffer->format); if (oldOpacity != isOpaque()) { recomputeVisibleRegions = true; } Loading @@ -446,15 +462,14 @@ void Layer::lockPageFlip(bool& recomputeVisibleRegions) // FIXME: mPostedDirtyRegion = dirty & bounds mPostedDirtyRegion.set(front.w, front.h); // update active buffer mActiveBuffer = newFrontBuffer; if ((front.w != front.requested_w) || (front.h != front.requested_h)) { // check that we received a buffer of the right size // (Take the buffer's orientation into account) sp<GraphicBuffer> newFrontBuffer(mActiveBuffer); uint32_t bufWidth = newFrontBuffer->getWidth(); uint32_t bufHeight = newFrontBuffer->getHeight(); if (mCurrentTransform & Transform::ROT_90) { swap(bufWidth, bufHeight); } Loading
services/surfaceflinger/LayerBase.cpp +5 −4 Original line number Diff line number Diff line Loading @@ -335,17 +335,18 @@ void LayerBase::setGeometry(hwc_layer_t* hwcl) reinterpret_cast<hwc_rect_t const *>( visibleRegionScreen.getArray( &hwcl->visibleRegionScreen.numRects)); } void LayerBase::setPerFrameData(hwc_layer_t* hwcl) { hwcl->compositionType = HWC_FRAMEBUFFER; hwcl->handle = NULL; hwcl->sourceCrop.left = 0; hwcl->sourceCrop.top = 0; hwcl->sourceCrop.right = mTransformedBounds.width(); hwcl->sourceCrop.bottom = mTransformedBounds.height(); } void LayerBase::setPerFrameData(hwc_layer_t* hwcl) { hwcl->compositionType = HWC_FRAMEBUFFER; hwcl->handle = NULL; } void LayerBase::setFiltering(bool filtering) { mFiltering = filtering; Loading