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

Commit de79278d authored by Ady Abraham's avatar Ady Abraham
Browse files

SF: cleanup CommandWriterBase and CommandReaderBase part 2

Bug: 208856704
Test: VTS
Change-Id: I10f228e2c7b49cb6e2bece40605d55509cd8b5b4
parent c451b5e3
Loading
Loading
Loading
Loading
+57 −26
Original line number Original line Diff line number Diff line
@@ -373,10 +373,14 @@ Error AidlComposer::getActiveConfig(Display display, Config* outConfig) {
Error AidlComposer::getChangedCompositionTypes(
Error AidlComposer::getChangedCompositionTypes(
        Display display, std::vector<Layer>* outLayers,
        Display display, std::vector<Layer>* outLayers,
        std::vector<aidl::android::hardware::graphics::composer3::Composition>* outTypes) {
        std::vector<aidl::android::hardware::graphics::composer3::Composition>* outTypes) {
    std::vector<int64_t> layers;
    const auto changedLayers = mReader.takeChangedCompositionTypes(translate<int64_t>(display));
    mReader.takeChangedCompositionTypes(translate<int64_t>(display), &layers, outTypes);
    outLayers->reserve(changedLayers.size());
    outTypes->reserve(changedLayers.size());


    *outLayers = translate<Layer>(layers);
    for (const auto& layer : changedLayers) {
        outLayers->emplace_back(translate<Layer>(layer.layer));
        outTypes->emplace_back(layer.composition);
    }
    return Error::NONE;
    return Error::NONE;
}
}


@@ -429,10 +433,15 @@ Error AidlComposer::getDisplayName(Display display, std::string* outName) {
Error AidlComposer::getDisplayRequests(Display display, uint32_t* outDisplayRequestMask,
Error AidlComposer::getDisplayRequests(Display display, uint32_t* outDisplayRequestMask,
                                       std::vector<Layer>* outLayers,
                                       std::vector<Layer>* outLayers,
                                       std::vector<uint32_t>* outLayerRequestMasks) {
                                       std::vector<uint32_t>* outLayerRequestMasks) {
    std::vector<int64_t> layers;
    const auto displayRequests = mReader.takeDisplayRequests(translate<int64_t>(display));
    mReader.takeDisplayRequests(translate<int64_t>(display), outDisplayRequestMask, &layers,
    *outDisplayRequestMask = translate<uint32_t>(displayRequests.mask);
                                outLayerRequestMasks);
    outLayers->reserve(displayRequests.layerRequests.size());
    *outLayers = translate<Layer>(layers);
    outLayerRequestMasks->reserve(displayRequests.layerRequests.size());

    for (const auto& layer : displayRequests.layerRequests) {
        outLayers->emplace_back(translate<Layer>(layer.layer));
        outLayerRequestMasks->emplace_back(translate<uint32_t>(layer.mask));
    }
    return Error::NONE;
    return Error::NONE;
}
}


@@ -469,9 +478,17 @@ Error AidlComposer::getHdrCapabilities(Display display, std::vector<Hdr>* outTyp


Error AidlComposer::getReleaseFences(Display display, std::vector<Layer>* outLayers,
Error AidlComposer::getReleaseFences(Display display, std::vector<Layer>* outLayers,
                                     std::vector<int>* outReleaseFences) {
                                     std::vector<int>* outReleaseFences) {
    std::vector<int64_t> layers;
    auto fences = mReader.takeReleaseFences(translate<int64_t>(display));
    mReader.takeReleaseFences(translate<int64_t>(display), &layers, outReleaseFences);
    outLayers->reserve(fences.size());
    *outLayers = translate<Layer>(layers);
    outReleaseFences->reserve(fences.size());

    for (auto& fence : fences) {
        outLayers->emplace_back(translate<Layer>(fence.layer));
        // take ownership
        const int fenceOwner = fence.fence.get();
        *fence.fence.getR() = -1;
        outReleaseFences->emplace_back(fenceOwner);
    }
    return Error::NONE;
    return Error::NONE;
}
}


@@ -484,8 +501,10 @@ Error AidlComposer::presentDisplay(Display display, int* outPresentFence) {
        return error;
        return error;
    }
    }


    mReader.takePresentFence(translate<int64_t>(display), outPresentFence);
    auto fence = mReader.takePresentFence(translate<int64_t>(display));

    // take ownership
    *outPresentFence = fence.get();
    *fence.getR() = -1;
    return Error::NONE;
    return Error::NONE;
}
}


@@ -597,13 +616,22 @@ Error AidlComposer::presentOrValidateDisplay(Display display, nsecs_t expectedPr
        return error;
        return error;
    }
    }


    mReader.takePresentOrValidateStage(translate<int64_t>(display), state);
    const auto result = mReader.takePresentOrValidateStage(translate<int64_t>(display));
    if (!result.has_value()) {
        *state = translate<uint32_t>(-1);
        return Error::NO_RESOURCES;
    }

    *state = translate<uint32_t>(*result);


    if (*state == 1) { // Present succeeded
    if (*result == PresentOrValidate::Result::Presented) {
        mReader.takePresentFence(translate<int64_t>(display), outPresentFence);
        auto fence = mReader.takePresentFence(translate<int64_t>(display));
        // take ownership
        *outPresentFence = fence.get();
        *fence.getR() = -1;
    }
    }


    if (*state == 0) { // Validate succeeded.
    if (*result == PresentOrValidate::Result::Validated) {
        mReader.hasChanges(translate<int64_t>(display), outNumTypes, outNumRequests);
        mReader.hasChanges(translate<int64_t>(display), outNumTypes, outNumRequests);
    }
    }


@@ -711,6 +739,7 @@ Error AidlComposer::execute() {
        return Error::NONE;
        return Error::NONE;
    }
    }


    { // scope for results
        std::vector<CommandResultPayload> results;
        std::vector<CommandResultPayload> results;
        auto status = mAidlComposerClient->executeCommands(commands, &results);
        auto status = mAidlComposerClient->executeCommands(commands, &results);
        if (!status.isOk()) {
        if (!status.isOk()) {
@@ -718,7 +747,8 @@ Error AidlComposer::execute() {
            return static_cast<Error>(status.getServiceSpecificError());
            return static_cast<Error>(status.getServiceSpecificError());
        }
        }


    mReader.parse(results);
        mReader.parse(std::move(results));
    }
    const auto commandErrors = mReader.takeErrors();
    const auto commandErrors = mReader.takeErrors();
    Error error = Error::NONE;
    Error error = Error::NONE;
    for (const auto& cmdErr : commandErrors) {
    for (const auto& cmdErr : commandErrors) {
@@ -993,9 +1023,10 @@ V2_4::Error AidlComposer::getLayerGenericMetadataKeys(
Error AidlComposer::getClientTargetProperty(
Error AidlComposer::getClientTargetProperty(
        Display display, IComposerClient::ClientTargetProperty* outClientTargetProperty,
        Display display, IComposerClient::ClientTargetProperty* outClientTargetProperty,
        float* whitePointNits) {
        float* whitePointNits) {
    ClientTargetProperty property;
    const auto property = mReader.takeClientTargetProperty(translate<int64_t>(display));
    mReader.takeClientTargetProperty(translate<int64_t>(display), &property, whitePointNits);
    *outClientTargetProperty =
    *outClientTargetProperty = translate<IComposerClient::ClientTargetProperty>(property);
            translate<IComposerClient::ClientTargetProperty>(property.clientTargetProperty);
    *whitePointNits = property.whitePointNits;
    return Error::NONE;
    return Error::NONE;
}
}