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

Commit da03fe4b authored by Dan Stoza's avatar Dan Stoza Committed by Android (Google) Code Review
Browse files

Merge "Allow disabling layer rotation during screenshots"

parents 79aa6213 c701401f
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -120,7 +120,8 @@ public:
    virtual status_t captureScreen(const sp<IBinder>& display,
            const sp<IGraphicBufferProducer>& producer,
            uint32_t reqWidth, uint32_t reqHeight,
            uint32_t minLayerZ, uint32_t maxLayerZ) = 0;
            uint32_t minLayerZ, uint32_t maxLayerZ,
            bool useIdentityTransform) = 0;
};

// ----------------------------------------------------------------------------
+7 −4
Original line number Diff line number Diff line
@@ -164,7 +164,8 @@ public:
            const sp<IBinder>& display,
            const sp<IGraphicBufferProducer>& producer,
            uint32_t reqWidth, uint32_t reqHeight,
            uint32_t minLayerZ, uint32_t maxLayerZ);
            uint32_t minLayerZ, uint32_t maxLayerZ,
            bool useIdentityTransform);

private:
    mutable sp<CpuConsumer> mCpuConsumer;
@@ -177,12 +178,14 @@ public:
    ~ScreenshotClient();

    // frees the previous screenshot and capture a new one
    status_t update(const sp<IBinder>& display);
    status_t update(const sp<IBinder>& display, bool useIdentityTransform);
    status_t update(const sp<IBinder>& display,
            uint32_t reqWidth, uint32_t reqHeight);
            uint32_t reqWidth, uint32_t reqHeight,
            bool useIdentityTransform);
    status_t update(const sp<IBinder>& display,
            uint32_t reqWidth, uint32_t reqHeight,
            uint32_t minLayerZ, uint32_t maxLayerZ);
            uint32_t minLayerZ, uint32_t maxLayerZ,
            bool useIdentityTransform);

    sp<CpuConsumer> getCpuConsumer() const;

+7 −2
Original line number Diff line number Diff line
@@ -105,7 +105,8 @@ public:
    virtual status_t captureScreen(const sp<IBinder>& display,
            const sp<IGraphicBufferProducer>& producer,
            uint32_t reqWidth, uint32_t reqHeight,
            uint32_t minLayerZ, uint32_t maxLayerZ)
            uint32_t minLayerZ, uint32_t maxLayerZ,
            bool useIdentityTransform)
    {
        Parcel data, reply;
        data.writeInterfaceToken(ISurfaceComposer::getInterfaceDescriptor());
@@ -115,6 +116,7 @@ public:
        data.writeInt32(reqHeight);
        data.writeInt32(minLayerZ);
        data.writeInt32(maxLayerZ);
        data.writeInt32(static_cast<int32_t>(useIdentityTransform));
        remote()->transact(BnSurfaceComposer::CAPTURE_SCREEN, data, &reply);
        return reply.readInt32();
    }
@@ -285,8 +287,11 @@ status_t BnSurfaceComposer::onTransact(
            uint32_t reqHeight = data.readInt32();
            uint32_t minLayerZ = data.readInt32();
            uint32_t maxLayerZ = data.readInt32();
            bool useIdentityTransform = static_cast<bool>(data.readInt32());

            status_t res = captureScreen(display, producer,
                    reqWidth, reqHeight, minLayerZ, maxLayerZ);
                    reqWidth, reqHeight, minLayerZ, maxLayerZ,
                    useIdentityTransform);
            reply->writeInt32(res);
            return NO_ERROR;
        }
+12 −8
Original line number Diff line number Diff line
@@ -628,11 +628,11 @@ status_t ScreenshotClient::capture(
        const sp<IBinder>& display,
        const sp<IGraphicBufferProducer>& producer,
        uint32_t reqWidth, uint32_t reqHeight,
        uint32_t minLayerZ, uint32_t maxLayerZ) {
        uint32_t minLayerZ, uint32_t maxLayerZ, bool useIdentityTransform) {
    sp<ISurfaceComposer> s(ComposerService::getComposerService());
    if (s == NULL) return NO_INIT;
    return s->captureScreen(display, producer,
            reqWidth, reqHeight, minLayerZ, maxLayerZ);
            reqWidth, reqHeight, minLayerZ, maxLayerZ, useIdentityTransform);
}

ScreenshotClient::ScreenshotClient()
@@ -655,7 +655,8 @@ sp<CpuConsumer> ScreenshotClient::getCpuConsumer() const {

status_t ScreenshotClient::update(const sp<IBinder>& display,
        uint32_t reqWidth, uint32_t reqHeight,
        uint32_t minLayerZ, uint32_t maxLayerZ) {
        uint32_t minLayerZ, uint32_t maxLayerZ,
        bool useIdentityTransform) {
    sp<ISurfaceComposer> s(ComposerService::getComposerService());
    if (s == NULL) return NO_INIT;
    sp<CpuConsumer> cpuConsumer = getCpuConsumer();
@@ -667,7 +668,7 @@ status_t ScreenshotClient::update(const sp<IBinder>& display,
    }

    status_t err = s->captureScreen(display, mBufferQueue,
            reqWidth, reqHeight, minLayerZ, maxLayerZ);
            reqWidth, reqHeight, minLayerZ, maxLayerZ, useIdentityTransform);

    if (err == NO_ERROR) {
        err = mCpuConsumer->lockNextBuffer(&mBuffer);
@@ -678,13 +679,16 @@ status_t ScreenshotClient::update(const sp<IBinder>& display,
    return err;
}

status_t ScreenshotClient::update(const sp<IBinder>& display) {
    return ScreenshotClient::update(display, 0, 0, 0, -1UL);
status_t ScreenshotClient::update(const sp<IBinder>& display,
        bool useIdentityTransform) {
    return ScreenshotClient::update(display, 0, 0, 0, -1UL,
            useIdentityTransform);
}

status_t ScreenshotClient::update(const sp<IBinder>& display,
        uint32_t reqWidth, uint32_t reqHeight) {
    return ScreenshotClient::update(display, reqWidth, reqHeight, 0, -1UL);
        uint32_t reqWidth, uint32_t reqHeight, bool useIdentityTransform) {
    return ScreenshotClient::update(display, reqWidth, reqHeight, 0, -1UL,
            useIdentityTransform);
}

void ScreenshotClient::release() {
+2 −0
Original line number Diff line number Diff line
@@ -194,6 +194,8 @@ void DisplayDevice::flip(const Region& dirty) const
        eglSetSwapRectangleANDROID(dpy, surface,
                b.left, b.top, b.width(), b.height());
    }
#else
    (void) dirty; // Eliminate unused parameter warning
#endif

    mPageFlipCount++;
Loading