Loading services/surfaceflinger/Layer.cpp +10 −12 Original line number Diff line number Diff line Loading @@ -58,7 +58,7 @@ Layer::Layer(SurfaceFlinger* flinger, mSecure(false), mTextureManager(), mBufferManager(mTextureManager), mWidth(0), mHeight(0), mFixedSize(false) mWidth(0), mHeight(0), mNeedsScaling(false), mFixedSize(false) { } Loading Loading @@ -274,13 +274,10 @@ slowpath: void Layer::drawForSreenShot() const { bool currentFixedSize = mFixedSize; bool currentBlending = mNeedsBlending; const_cast<Layer*>(this)->mFixedSize = false; const_cast<Layer*>(this)->mFixedSize = true; const bool currentFiltering = mNeedsFiltering; const_cast<Layer*>(this)->mNeedsFiltering = true; LayerBase::drawForSreenShot(); const_cast<Layer*>(this)->mFixedSize = currentFixedSize; const_cast<Layer*>(this)->mNeedsBlending = currentBlending; const_cast<Layer*>(this)->mNeedsFiltering = currentFiltering; } void Layer::onDraw(const Region& clip) const Loading Loading @@ -318,11 +315,10 @@ void Layer::onDraw(const Region& clip) const bool Layer::needsFiltering() const { if (!(mFlags & DisplayHardware::SLOW_CONFIG)) { // NOTE: there is a race here, because mFixedSize is updated in a // binder transaction. however, it doesn't really matter since it is // evaluated each time we draw. To be perfectly correct, this flag // would have to be associated with a buffer. if (mFixedSize) // if our buffer is not the same size than ourselves, // we need filtering. Mutex::Autolock _l(mLock); if (mNeedsScaling) return true; } return LayerBase::needsFiltering(); Loading Loading @@ -396,6 +392,7 @@ sp<GraphicBuffer> Layer::requestBuffer(int index, mReqHeight = reqHeight; mReqFormat = reqFormat; mFixedSize = fixedSize; mNeedsScaling = mWidth != mReqWidth || mHeight != mReqHeight; lcblk->reallocateAllExcept(index); } Loading Loading @@ -519,6 +516,7 @@ void Layer::setBufferSize(uint32_t w, uint32_t h) { Mutex::Autolock _l(mLock); mWidth = w; mHeight = h; mNeedsScaling = mWidth != mReqWidth || mHeight != mReqHeight; } bool Layer::isFixedSize() const { Loading services/surfaceflinger/Layer.h +1 −0 Original line number Diff line number Diff line Loading @@ -233,6 +233,7 @@ private: uint32_t mReqWidth; uint32_t mReqHeight; uint32_t mReqFormat; bool mNeedsScaling; bool mFixedSize; }; Loading services/surfaceflinger/LayerBase.cpp +4 −8 Original line number Diff line number Diff line Loading @@ -216,14 +216,10 @@ uint32_t LayerBase::doTransaction(uint32_t flags) flags |= eVisibleRegion; this->contentDirty = true; mNeedsFiltering = false; if (!(mFlags & DisplayHardware::SLOW_CONFIG)) { // we may use linear filtering, if the matrix scales us const uint8_t type = temp.transform.getType(); if (!temp.transform.preserveRects() || (type >= Transform::SCALE)) { mNeedsFiltering = true; } } mNeedsFiltering = (!temp.transform.preserveRects() || (type >= Transform::SCALE)); } // Commit the transaction Loading services/surfaceflinger/LayerBase.h +3 −1 Original line number Diff line number Diff line Loading @@ -191,7 +191,9 @@ public: /** * needsLinearFiltering - true if this surface needs filtering */ virtual bool needsFiltering() const { return mNeedsFiltering; } virtual bool needsFiltering() const { return (!(mFlags & DisplayHardware::SLOW_CONFIG)) && mNeedsFiltering; } /** * isSecure - true if this surface is secure, that is if it prevents Loading Loading
services/surfaceflinger/Layer.cpp +10 −12 Original line number Diff line number Diff line Loading @@ -58,7 +58,7 @@ Layer::Layer(SurfaceFlinger* flinger, mSecure(false), mTextureManager(), mBufferManager(mTextureManager), mWidth(0), mHeight(0), mFixedSize(false) mWidth(0), mHeight(0), mNeedsScaling(false), mFixedSize(false) { } Loading Loading @@ -274,13 +274,10 @@ slowpath: void Layer::drawForSreenShot() const { bool currentFixedSize = mFixedSize; bool currentBlending = mNeedsBlending; const_cast<Layer*>(this)->mFixedSize = false; const_cast<Layer*>(this)->mFixedSize = true; const bool currentFiltering = mNeedsFiltering; const_cast<Layer*>(this)->mNeedsFiltering = true; LayerBase::drawForSreenShot(); const_cast<Layer*>(this)->mFixedSize = currentFixedSize; const_cast<Layer*>(this)->mNeedsBlending = currentBlending; const_cast<Layer*>(this)->mNeedsFiltering = currentFiltering; } void Layer::onDraw(const Region& clip) const Loading Loading @@ -318,11 +315,10 @@ void Layer::onDraw(const Region& clip) const bool Layer::needsFiltering() const { if (!(mFlags & DisplayHardware::SLOW_CONFIG)) { // NOTE: there is a race here, because mFixedSize is updated in a // binder transaction. however, it doesn't really matter since it is // evaluated each time we draw. To be perfectly correct, this flag // would have to be associated with a buffer. if (mFixedSize) // if our buffer is not the same size than ourselves, // we need filtering. Mutex::Autolock _l(mLock); if (mNeedsScaling) return true; } return LayerBase::needsFiltering(); Loading Loading @@ -396,6 +392,7 @@ sp<GraphicBuffer> Layer::requestBuffer(int index, mReqHeight = reqHeight; mReqFormat = reqFormat; mFixedSize = fixedSize; mNeedsScaling = mWidth != mReqWidth || mHeight != mReqHeight; lcblk->reallocateAllExcept(index); } Loading Loading @@ -519,6 +516,7 @@ void Layer::setBufferSize(uint32_t w, uint32_t h) { Mutex::Autolock _l(mLock); mWidth = w; mHeight = h; mNeedsScaling = mWidth != mReqWidth || mHeight != mReqHeight; } bool Layer::isFixedSize() const { Loading
services/surfaceflinger/Layer.h +1 −0 Original line number Diff line number Diff line Loading @@ -233,6 +233,7 @@ private: uint32_t mReqWidth; uint32_t mReqHeight; uint32_t mReqFormat; bool mNeedsScaling; bool mFixedSize; }; Loading
services/surfaceflinger/LayerBase.cpp +4 −8 Original line number Diff line number Diff line Loading @@ -216,14 +216,10 @@ uint32_t LayerBase::doTransaction(uint32_t flags) flags |= eVisibleRegion; this->contentDirty = true; mNeedsFiltering = false; if (!(mFlags & DisplayHardware::SLOW_CONFIG)) { // we may use linear filtering, if the matrix scales us const uint8_t type = temp.transform.getType(); if (!temp.transform.preserveRects() || (type >= Transform::SCALE)) { mNeedsFiltering = true; } } mNeedsFiltering = (!temp.transform.preserveRects() || (type >= Transform::SCALE)); } // Commit the transaction Loading
services/surfaceflinger/LayerBase.h +3 −1 Original line number Diff line number Diff line Loading @@ -191,7 +191,9 @@ public: /** * needsLinearFiltering - true if this surface needs filtering */ virtual bool needsFiltering() const { return mNeedsFiltering; } virtual bool needsFiltering() const { return (!(mFlags & DisplayHardware::SLOW_CONFIG)) && mNeedsFiltering; } /** * isSecure - true if this surface is secure, that is if it prevents Loading