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

Commit af45f012 authored by tangrobin's avatar tangrobin
Browse files

SF: Add defensive check on luma sampling

The Add/Remove RegionSamplingListener should return BAD_VALUE
if the input was invalid.

Bug: 119639245
Test: ./libgui_test --gtest_filter="RegionSamplingTest.*"
Change-Id: I5c5f7a30131c52dead970b23230058a62a874902
parent 79555a7a
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -792,18 +792,18 @@ public:
        Parcel data, reply;
        status_t error = data.writeInterfaceToken(ISurfaceComposer::getInterfaceDescriptor());
        if (error != NO_ERROR) {
            ALOGE("addRegionSamplingListener: Failed to write interface token");
            ALOGE("removeRegionSamplingListener: Failed to write interface token");
            return error;
        }
        error = data.writeStrongBinder(IInterface::asBinder(listener));
        if (error != NO_ERROR) {
            ALOGE("addRegionSamplingListener: Failed to write listener");
            ALOGE("removeRegionSamplingListener: Failed to write listener");
            return error;
        }
        error = remote()->transact(BnSurfaceComposer::REMOVE_REGION_SAMPLING_LISTENER, data,
                                   &reply);
        if (error != NO_ERROR) {
            ALOGE("addRegionSamplingListener: Failed to transact");
            ALOGE("removeRegionSamplingListener: Failed to transact");
        }
        return error;
    }
+4 −1
Original line number Diff line number Diff line
@@ -1309,7 +1309,7 @@ status_t SurfaceFlinger::getCompositionPreference(
status_t SurfaceFlinger::addRegionSamplingListener(const Rect& samplingArea,
                                                   const sp<IBinder>& stopLayerHandle,
                                                   const sp<IRegionSamplingListener>& listener) {
    if (!listener) {
    if (!listener || samplingArea == Rect::INVALID_RECT) {
        return BAD_VALUE;
    }
    mRegionSamplingThread->addListener(samplingArea, stopLayerHandle, listener);
@@ -1317,6 +1317,9 @@ status_t SurfaceFlinger::addRegionSamplingListener(const Rect& samplingArea,
}

status_t SurfaceFlinger::removeRegionSamplingListener(const sp<IRegionSamplingListener>& listener) {
    if (!listener) {
        return BAD_VALUE;
    }
    mRegionSamplingThread->removeListener(listener);
    return NO_ERROR;
}