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

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

Merge "SF: Fix use after move bug in screen capture refactor"

parents 99d1f6a3 01c31167
Loading
Loading
Loading
Loading
+17 −8
Original line number Diff line number Diff line
@@ -24,10 +24,16 @@

namespace android {

std::shared_ptr<ScreenCaptureOutput> createScreenCaptureOutput(ScreenCaptureOutputArgs&& args) {
std::shared_ptr<ScreenCaptureOutput> createScreenCaptureOutput(ScreenCaptureOutputArgs args) {
    std::shared_ptr<ScreenCaptureOutput> output = compositionengine::impl::createOutputTemplated<
            ScreenCaptureOutput, compositionengine::CompositionEngine,
            ScreenCaptureOutputArgs&&>(args.compositionEngine, std::move(args));
            ScreenCaptureOutput, compositionengine::CompositionEngine, const RenderArea&,
            std::unordered_set<compositionengine::LayerFE*>,
            const compositionengine::Output::ColorProfile&, bool>(args.compositionEngine,
                                                                  args.renderArea,
                                                                  std::move(
                                                                          args.filterForScreenshot),
                                                                  args.colorProfile,
                                                                  args.regionSampling);
    output->editState().isSecure = args.renderArea.isSecure();
    output->setCompositionEnabled(true);
    output->setLayerFilter({args.layerStack});
@@ -50,11 +56,14 @@ std::shared_ptr<ScreenCaptureOutput> createScreenCaptureOutput(ScreenCaptureOutp
    return output;
}

ScreenCaptureOutput::ScreenCaptureOutput(ScreenCaptureOutputArgs&& args)
      : mRenderArea(args.renderArea),
        mFilterForScreenshot(std::move(args.filterForScreenshot)),
        mColorProfile(args.colorProfile),
        mRegionSampling(args.regionSampling) {}
ScreenCaptureOutput::ScreenCaptureOutput(
        const RenderArea& renderArea,
        std::unordered_set<compositionengine::LayerFE*> filterForScreenshot,
        const compositionengine::Output::ColorProfile& colorProfile, bool regionSampling)
      : mRenderArea(renderArea),
        mFilterForScreenshot(std::move(filterForScreenshot)),
        mColorProfile(colorProfile),
        mRegionSampling(regionSampling) {}

void ScreenCaptureOutput::updateColorProfile(const compositionengine::CompositionRefreshArgs&) {
    auto& outputState = editState();
+5 −2
Original line number Diff line number Diff line
@@ -43,7 +43,10 @@ struct ScreenCaptureOutputArgs {
// SurfaceFlinger::captureLayers and SurfaceFlinger::captureDisplay.
class ScreenCaptureOutput : public compositionengine::impl::Output {
public:
    ScreenCaptureOutput(ScreenCaptureOutputArgs&&);
    ScreenCaptureOutput(const RenderArea& renderArea,
                        std::unordered_set<compositionengine::LayerFE*> filterForScreenshot,
                        const compositionengine::Output::ColorProfile& colorProfile,
                        bool regionSampling);

    void updateColorProfile(const compositionengine::CompositionRefreshArgs&) override;

@@ -64,6 +67,6 @@ private:
    const bool mRegionSampling;
};

std::shared_ptr<ScreenCaptureOutput> createScreenCaptureOutput(ScreenCaptureOutputArgs&&);
std::shared_ptr<ScreenCaptureOutput> createScreenCaptureOutput(ScreenCaptureOutputArgs);

} // namespace android