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

Commit 7cbcc371 authored by Kevin DuBois's avatar Kevin DuBois
Browse files

SF: tidy comments for luma sampling.

Tidying of const, comment and one internal fn name for
Region Luma sampling.

Test: libgui_test --gtest_filter="RegionSamp*"

Change-Id: I46895c8ed5b2e2045d7ce7444085585b62b5ab6e
parent 613e49e9
Loading
Loading
Loading
Loading
+9 −6
Original line number Diff line number Diff line
@@ -119,7 +119,8 @@ float sampleArea(const uint32_t* data, int32_t stride, const Rect& area) {
}
} // anonymous namespace

std::vector<float> sampleBuffer(const sp<GraphicBuffer>& buffer, const Point& leftTop,
std::vector<float> RegionSamplingThread::sampleBuffer(
        const sp<GraphicBuffer>& buffer, const Point& leftTop,
        const std::vector<RegionSamplingThread::Descriptor>& descriptors) {
    void* data_raw = nullptr;
    buffer->lock(GRALLOC_USAGE_SW_READ_OFTEN, &data_raw);
@@ -150,7 +151,7 @@ void RegionSamplingThread::captureSample() {
        descriptors.emplace_back(descriptor);
    }

    Rect sampledArea = sampleRegion.bounds();
    const Rect sampledArea = sampleRegion.bounds();

    sp<const DisplayDevice> device = mFlinger.getDefaultDisplayDevice();
    DisplayRenderArea renderArea(device, sampledArea, sampledArea.getWidth(),
@@ -174,8 +175,8 @@ void RegionSamplingThread::captureSample() {
            }

            // Compute the layer's position on the screen
            Rect bounds = Rect(layer->getBounds());
            ui::Transform transform = layer->getTransform();
            const Rect bounds = Rect(layer->getBounds());
            const ui::Transform transform = layer->getTransform();
            constexpr bool roundOutwards = true;
            Rect transformed = transform.transform(bounds, roundOutwards);

@@ -215,7 +216,7 @@ void RegionSamplingThread::captureSample() {
    //
    // To avoid this, we drop the mutex while we call into SF.
    mMutex.unlock();
    mFlinger.captureScreenCore(renderArea, traverseLayers, buffer, false);
    mFlinger.captureScreenCommon(renderArea, traverseLayers, buffer, false);
    mMutex.lock();

    std::vector<Descriptor> activeDescriptors;
@@ -229,6 +230,8 @@ void RegionSamplingThread::captureSample() {
    std::vector<float> lumas = sampleBuffer(buffer, sampledArea.leftTop(), activeDescriptors);

    if (lumas.size() != activeDescriptors.size()) {
        ALOGW("collected %zu median luma values for %zu descriptors", lumas.size(),
              activeDescriptors.size());
        return;
    }

+8 −1
Original line number Diff line number Diff line
@@ -38,11 +38,16 @@ public:
    explicit RegionSamplingThread(SurfaceFlinger& flinger);
    ~RegionSamplingThread();

    // Add a listener to receive luma notifications. The luma reported via listener will
    // report the median luma for the layers under the stopLayerHandle, in the samplingArea region.
    void addListener(const Rect& samplingArea, const sp<IBinder>& stopLayerHandle,
                     const sp<IRegionSamplingListener>& listener);
    // Remove the listener to stop receiving median luma notifications.
    void removeListener(const sp<IRegionSamplingListener>& listener);
    // Instruct the thread to perform a median luma sampling on the layers.
    void sampleNow();

private:
    struct Descriptor {
        Rect area = Rect::EMPTY_RECT;
        wp<Layer> stopLayer;
@@ -54,8 +59,10 @@ public:
            return std::hash<IBinder*>()(p.unsafe_get());
        }
    };
    std::vector<float> sampleBuffer(
            const sp<GraphicBuffer>& buffer, const Point& leftTop,
            const std::vector<RegionSamplingThread::Descriptor>& descriptors);

private:
    void binderDied(const wp<IBinder>& who) override;

    void captureSample() REQUIRES(mMutex);
+5 −5
Original line number Diff line number Diff line
@@ -5485,10 +5485,10 @@ status_t SurfaceFlinger::captureScreenCommon(RenderArea& renderArea,
                                             static_cast<android_pixel_format>(reqPixelFormat), 1,
                                             usage, "screenshot");

    return captureScreenCore(renderArea, traverseLayers, *outBuffer, useIdentityTransform);
    return captureScreenCommon(renderArea, traverseLayers, *outBuffer, useIdentityTransform);
}

status_t SurfaceFlinger::captureScreenCore(RenderArea& renderArea,
status_t SurfaceFlinger::captureScreenCommon(RenderArea& renderArea,
                                             TraverseLayersFunction traverseLayers,
                                             const sp<GraphicBuffer>& buffer,
                                             bool useIdentityTransform) {
+2 −2
Original line number Diff line number Diff line
@@ -635,7 +635,7 @@ private:
    status_t captureScreenCommon(RenderArea& renderArea, TraverseLayersFunction traverseLayers,
                                 sp<GraphicBuffer>* outBuffer, const ui::PixelFormat reqPixelFormat,
                                 bool useIdentityTransform);
    status_t captureScreenCore(RenderArea& renderArea, TraverseLayersFunction traverseLayers,
    status_t captureScreenCommon(RenderArea& renderArea, TraverseLayersFunction traverseLayers,
                                 const sp<GraphicBuffer>& buffer, bool useIdentityTransform);
    status_t captureScreenImplLocked(const RenderArea& renderArea,
                                     TraverseLayersFunction traverseLayers,