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

Commit 1af957a4 authored by Patrick Williams's avatar Patrick Williams Committed by Android (Google) Code Review
Browse files

Merge "Use FenceResult in ScreenCaptureResults"

parents 0ce871c6 fdb57bb7
Loading
Loading
Loading
Loading
+11 −6
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
#include <gui/ScreenCaptureResults.h>

#include <private/gui/ParcelUtils.h>
#include <ui/FenceResult.h>

namespace android::gui {

@@ -28,17 +29,17 @@ status_t ScreenCaptureResults::writeToParcel(android::Parcel* parcel) const {
        SAFE_PARCEL(parcel->writeBool, false);
    }

    if (fence != Fence::NO_FENCE) {
    if (fenceResult.ok() && fenceResult.value() != Fence::NO_FENCE) {
        SAFE_PARCEL(parcel->writeBool, true);
        SAFE_PARCEL(parcel->write, *fence);
        SAFE_PARCEL(parcel->write, *fenceResult.value());
    } else {
        SAFE_PARCEL(parcel->writeBool, false);
        SAFE_PARCEL(parcel->writeInt32, fenceStatus(fenceResult));
    }

    SAFE_PARCEL(parcel->writeBool, capturedSecureLayers);
    SAFE_PARCEL(parcel->writeBool, capturedHdrLayers);
    SAFE_PARCEL(parcel->writeUint32, static_cast<uint32_t>(capturedDataspace));
    SAFE_PARCEL(parcel->writeInt32, result);
    return NO_ERROR;
}

@@ -53,8 +54,13 @@ status_t ScreenCaptureResults::readFromParcel(const android::Parcel* parcel) {
    bool hasFence;
    SAFE_PARCEL(parcel->readBool, &hasFence);
    if (hasFence) {
        fence = new Fence();
        SAFE_PARCEL(parcel->read, *fence);
        fenceResult = sp<Fence>::make();
        SAFE_PARCEL(parcel->read, *fenceResult.value());
    } else {
        status_t status;
        SAFE_PARCEL(parcel->readInt32, &status);
        fenceResult = status == NO_ERROR ? FenceResult(Fence::NO_FENCE)
                                         : FenceResult(base::unexpected(status));
    }

    SAFE_PARCEL(parcel->readBool, &capturedSecureLayers);
@@ -62,7 +68,6 @@ status_t ScreenCaptureResults::readFromParcel(const android::Parcel* parcel) {
    uint32_t dataspace = 0;
    SAFE_PARCEL(parcel->readUint32, &dataspace);
    capturedDataspace = static_cast<ui::Dataspace>(dataspace);
    SAFE_PARCEL(parcel->readInt32, &result);
    return NO_ERROR;
}

+2 −2
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@
#include <binder/Parcel.h>
#include <binder/Parcelable.h>
#include <ui/Fence.h>
#include <ui/FenceResult.h>
#include <ui/GraphicBuffer.h>

namespace android::gui {
@@ -31,11 +32,10 @@ public:
    status_t readFromParcel(const android::Parcel* parcel) override;

    sp<GraphicBuffer> buffer;
    sp<Fence> fence = Fence::NO_FENCE;
    FenceResult fenceResult = Fence::NO_FENCE;
    bool capturedSecureLayers{false};
    bool capturedHdrLayers{false};
    ui::Dataspace capturedDataspace{ui::Dataspace::V0_SRGB};
    status_t result = OK;
};

} // namespace android::gui
+4 −2
Original line number Diff line number Diff line
@@ -34,7 +34,9 @@ public:
    ScreenCaptureResults waitForResults() {
        std::future<ScreenCaptureResults> resultsFuture = resultsPromise.get_future();
        const auto screenCaptureResults = resultsFuture.get();
        screenCaptureResults.fence->waitForever("");
        if (screenCaptureResults.fenceResult.ok()) {
            screenCaptureResults.fenceResult.value()->waitForever("");
        }
        return screenCaptureResults;
    }

+1 −1
Original line number Diff line number Diff line
@@ -311,7 +311,7 @@ protected:
            return err;
        }
        captureResults = captureListener->waitForResults();
        return captureResults.result;
        return fenceStatus(captureResults.fenceResult);
    }

    void queueBuffer(sp<IGraphicBufferProducer> igbp, uint8_t r, uint8_t g, uint8_t b,
+1 −1
Original line number Diff line number Diff line
@@ -218,7 +218,7 @@ protected:
            return err;
        }
        captureResults = captureListener->waitForResults();
        return captureResults.result;
        return fenceStatus(captureResults.fenceResult);
    }

    sp<Surface> mSurface;
Loading