Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cba7440d authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "SurfaceFlinger: Factor transformToDisplayInverse in-to buffer rejection"

parents 0f263e9d 35f0dda2
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -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.
+9 −0
Original line number Diff line number Diff line
@@ -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),
@@ -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) {
@@ -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) {
+2 −0
Original line number Diff line number Diff line
@@ -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);
@@ -40,6 +41,7 @@ namespace android {
        bool mStickyTransformSet;
        const char *mName;
        int32_t mOverrideScalingMode;
        bool mTransformToDisplayInverse;
        bool &mFreezeGeometryUpdates;
    };
}  // namespace android