Loading services/surfaceflinger/BufferLayer.cpp +3 −1 Original line number Diff line number Diff line Loading @@ -426,9 +426,11 @@ Region BufferLayer::latchBuffer(bool& recomputeVisibleRegions, nsecs_t latchTime bool queuedBuffer = false; LayerRejecter r(mDrawingState, getCurrentState(), recomputeVisibleRegions, getProducerStickyTransform() != 0, mName.string(), mOverrideScalingMode, mFreezeGeometryUpdates); getTransformToDisplayInverse(), mFreezeGeometryUpdates); status_t updateResult = mConsumer->updateTexImage(&r, mFlinger->mPrimaryDispSync, &mAutoRefresh, &queuedBuffer, mLastFrameNumberReceived); if (updateResult == BufferQueue::PRESENT_LATER) { // Producer doesn't want buffer to be displayed yet. Signal a // layer update so we check again at the next opportunity. Loading services/surfaceflinger/LayerRejecter.cpp +9 −0 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ LayerRejecter::LayerRejecter(Layer::State& front, bool stickySet, const char* name, int32_t overrideScalingMode, bool transformToDisplayInverse, bool& freezePositionUpdates) : mFront(front), mCurrent(current), Loading @@ -38,6 +39,7 @@ LayerRejecter::LayerRejecter(Layer::State& front, mStickyTransformSet(stickySet), mName(name), mOverrideScalingMode(overrideScalingMode), mTransformToDisplayInverse(transformToDisplayInverse), mFreezeGeometryUpdates(freezePositionUpdates) {} bool LayerRejecter::reject(const sp<GraphicBuffer>& buf, const BufferItem& item) { Loading @@ -54,6 +56,13 @@ bool LayerRejecter::reject(const sp<GraphicBuffer>& buf, const BufferItem& item) swap(bufWidth, bufHeight); } if (mTransformToDisplayInverse) { uint32_t invTransform = DisplayDevice::getPrimaryDisplayOrientationTransform(); if (invTransform & Transform::ROT_90) { swap(bufWidth, bufHeight); } } int actualScalingMode = mOverrideScalingMode >= 0 ? mOverrideScalingMode : item.mScalingMode; bool isFixedSize = actualScalingMode != NATIVE_WINDOW_SCALING_MODE_FREEZE; if (mFront.active != mFront.requested) { Loading services/surfaceflinger/LayerRejecter.h +2 −0 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ namespace android { bool stickySet, const char *name, int32_t overrideScalingMode, bool transformToDisplayInverse, bool &freezePositionUpdates); virtual bool reject(const sp<GraphicBuffer> &buf, const BufferItem &item); Loading @@ -40,6 +41,7 @@ namespace android { bool mStickyTransformSet; const char *mName; int32_t mOverrideScalingMode; bool mTransformToDisplayInverse; bool &mFreezeGeometryUpdates; }; } // namespace android Loading Loading
services/surfaceflinger/BufferLayer.cpp +3 −1 Original line number Diff line number Diff line Loading @@ -426,9 +426,11 @@ Region BufferLayer::latchBuffer(bool& recomputeVisibleRegions, nsecs_t latchTime bool queuedBuffer = false; LayerRejecter r(mDrawingState, getCurrentState(), recomputeVisibleRegions, getProducerStickyTransform() != 0, mName.string(), mOverrideScalingMode, mFreezeGeometryUpdates); getTransformToDisplayInverse(), mFreezeGeometryUpdates); status_t updateResult = mConsumer->updateTexImage(&r, mFlinger->mPrimaryDispSync, &mAutoRefresh, &queuedBuffer, mLastFrameNumberReceived); if (updateResult == BufferQueue::PRESENT_LATER) { // Producer doesn't want buffer to be displayed yet. Signal a // layer update so we check again at the next opportunity. Loading
services/surfaceflinger/LayerRejecter.cpp +9 −0 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ LayerRejecter::LayerRejecter(Layer::State& front, bool stickySet, const char* name, int32_t overrideScalingMode, bool transformToDisplayInverse, bool& freezePositionUpdates) : mFront(front), mCurrent(current), Loading @@ -38,6 +39,7 @@ LayerRejecter::LayerRejecter(Layer::State& front, mStickyTransformSet(stickySet), mName(name), mOverrideScalingMode(overrideScalingMode), mTransformToDisplayInverse(transformToDisplayInverse), mFreezeGeometryUpdates(freezePositionUpdates) {} bool LayerRejecter::reject(const sp<GraphicBuffer>& buf, const BufferItem& item) { Loading @@ -54,6 +56,13 @@ bool LayerRejecter::reject(const sp<GraphicBuffer>& buf, const BufferItem& item) swap(bufWidth, bufHeight); } if (mTransformToDisplayInverse) { uint32_t invTransform = DisplayDevice::getPrimaryDisplayOrientationTransform(); if (invTransform & Transform::ROT_90) { swap(bufWidth, bufHeight); } } int actualScalingMode = mOverrideScalingMode >= 0 ? mOverrideScalingMode : item.mScalingMode; bool isFixedSize = actualScalingMode != NATIVE_WINDOW_SCALING_MODE_FREEZE; if (mFront.active != mFront.requested) { Loading
services/surfaceflinger/LayerRejecter.h +2 −0 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ namespace android { bool stickySet, const char *name, int32_t overrideScalingMode, bool transformToDisplayInverse, bool &freezePositionUpdates); virtual bool reject(const sp<GraphicBuffer> &buf, const BufferItem &item); Loading @@ -40,6 +41,7 @@ namespace android { bool mStickyTransformSet; const char *mName; int32_t mOverrideScalingMode; bool mTransformToDisplayInverse; bool &mFreezeGeometryUpdates; }; } // namespace android Loading