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

Commit a4583646 authored by Mathias Agopian's avatar Mathias Agopian
Browse files

Add a debug option to turn the "transformation hint" off

transformation hint is disabled with:

   adb shell service call SurfaceFlinger 1009 i32 1

Change-Id: I9aafe6f280f88ce41569ed69a06dc522b10e3a88
parent 53331da0
Loading
Loading
Loading
Loading
+13 −2
Original line number Diff line number Diff line
@@ -541,9 +541,9 @@ void Layer::dump(String8& result, char* buffer, size_t SIZE) const
    snprintf(buffer, SIZE,
            "      "
            "format=%2d, activeBuffer=[%4ux%4u:%4u,%3X],"
            " freezeLock=%p, queued-frames=%d\n",
            " freezeLock=%p, transform-hint=0x%02x, queued-frames=%d\n",
            mFormat, w0, h0, s0,f0,
            getFreezeLock().get(), mQueuedFrames);
            getFreezeLock().get(), getTransformHint(), mQueuedFrames);

    result.append(buffer);

@@ -562,6 +562,17 @@ uint32_t Layer::getEffectiveUsage(uint32_t usage) const
    return usage;
}

uint32_t Layer::getTransformHint() const {
    uint32_t orientation = 0;
    if (!mFlinger->mDebugDisableTransformHint) {
        orientation = getOrientation();
        if (orientation & Transform::ROT_INVALID) {
            orientation = 0;
        }
    }
    return orientation;
}

// ---------------------------------------------------------------------------


+1 −0
Original line number Diff line number Diff line
@@ -89,6 +89,7 @@ private:
    void onFrameQueued();
    virtual sp<ISurface> createSurface();
    uint32_t getEffectiveUsage(uint32_t usage) const;
    uint32_t getTransformHint() const;
    bool isCropped() const;
    static bool getOpacityForFormat(uint32_t format);

+7 −0
Original line number Diff line number Diff line
@@ -93,6 +93,7 @@ SurfaceFlinger::SurfaceFlinger()
        mDebugBackground(0),
        mDebugDDMS(0),
        mDebugDisableHWC(0),
        mDebugDisableTransformHint(0),
        mDebugInSwapBuffers(0),
        mLastSwapBufferTime(0),
        mDebugInTransaction(0),
@@ -1689,6 +1690,12 @@ status_t SurfaceFlinger::onTransact(
                invalidateHwcGeometry();
                repaintEverything();
                return NO_ERROR;
            case 1009:  // toggle use of transform hint
                n = data.readInt32();
                mDebugDisableTransformHint = n ? 1 : 0;
                invalidateHwcGeometry();
                repaintEverything();
                return NO_ERROR;
            case 1010:  // interrogate.
                reply->writeInt32(0);
                reply->writeInt32(0);
+1 −0
Original line number Diff line number Diff line
@@ -374,6 +374,7 @@ private:
                int                         mDebugBackground;
                int                         mDebugDDMS;
                int                         mDebugDisableHWC;
                int                         mDebugDisableTransformHint;
                volatile nsecs_t            mDebugInSwapBuffers;
                nsecs_t                     mLastSwapBufferTime;
                volatile nsecs_t            mDebugInTransaction;
+1 −7
Original line number Diff line number Diff line
@@ -57,16 +57,10 @@ status_t SurfaceTextureLayer::queueBuffer(int buf, int64_t timestamp,

    status_t res = SurfaceTexture::queueBuffer(buf, timestamp,
            outWidth, outHeight, outTransform);

    sp<Layer> layer(mLayer.promote());
    if (layer != NULL) {
        uint32_t orientation = layer->getOrientation();
        if (orientation & Transform::ROT_INVALID) {
            orientation = 0;
        *outTransform = layer->getTransformHint();
    }
        *outTransform = orientation;
    }

    return res;
}