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

Commit 3177f58e authored by Emilian Peev's avatar Emilian Peev
Browse files

Camera: Correct partial result entry count query

Use the partial tag count instead of the
size of the metadata buffer.
Additionally initialize 'collectedResult' to avoid
false positives when checking partial result entries
against invalid/uninitialized accumulated results.

Bug: 187156343
Test: Partner verified
Change-Id: Iff55f53952c7b06bc2a0b9786247d8ec04227705
parent df759a03
Loading
Loading
Loading
Loading
+6 −3
Original line number Diff line number Diff line
@@ -997,7 +997,8 @@ protected:
                frameNumber(0),
                partialResultCount(0),
                errorStreamId(-1),
                hasInputBuffer(false) {}
                hasInputBuffer(false),
                collectedResult(1, 10) {}

        InFlightRequest(ssize_t numBuffers, bool hasInput,
                bool partialResults, uint32_t partialCount,
@@ -1013,7 +1014,8 @@ protected:
                frameNumber(0),
                partialResultCount(0),
                errorStreamId(-1),
                hasInputBuffer(hasInput) {}
                hasInputBuffer(hasInput),
                collectedResult(1, 10) {}

        InFlightRequest(ssize_t numBuffers, bool hasInput,
                bool partialResults, uint32_t partialCount,
@@ -1031,6 +1033,7 @@ protected:
                partialResultCount(0),
                errorStreamId(-1),
                hasInputBuffer(hasInput),
                collectedResult(1, 10),
                expectedPhysicalResults(extraPhysicalResult) {}
    };

@@ -1313,7 +1316,7 @@ bool CameraHidlTest::DeviceCb::processCaptureResultLocked(const CaptureResult& r
                reinterpret_cast<const camera_metadata_t*>(resultMetadata.data());
        const camera_metadata_t* collectedMetadata = request->collectedResult.getAndLock();
        camera_metadata_ro_entry_t searchEntry, foundEntry;
        for (size_t i = 0; i < get_camera_metadata_size(partialMetadata); i++) {
        for (size_t i = 0; i < get_camera_metadata_entry_count(partialMetadata); i++) {
            if (0 != get_camera_metadata_ro_entry(partialMetadata, i, &searchEntry)) {
                ADD_FAILURE();
                request->collectedResult.unlock(collectedMetadata);