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

Commit 1da379a1 authored by Emilian Peev's avatar Emilian Peev
Browse files

Camera: Cache physical camera id values

A pointer to data within CameraMetadata can become
invalid after each metadata modification. Cache any
values that could potentially point to the raw
internal metadata buffer.

Bug: 123954417
Test: Camera CTS
Change-Id: Ie5ac9600ff454af551c4cf8e0f25ba5a6a6e897d
parent 612be7ff
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -104,7 +104,8 @@ ACameraMetadata::derivePhysicalCameraIds() {
    for (size_t i = 0; i < entry.count; ++i) {
        if (ids[i] == '\0') {
            if (start != i) {
                mStaticPhysicalCameraIds.push_back((const char*)ids+start);
                mStaticPhysicalCameraIdValues.push_back(String8((const char *)ids+start));
                mStaticPhysicalCameraIds.push_back(mStaticPhysicalCameraIdValues.back().string());
            }
            start = i+1;
        }
+1 −0
Original line number Diff line number Diff line
@@ -117,6 +117,7 @@ struct ACameraMetadata : public RefBase {
    static std::unordered_set<uint32_t> sSystemTags;

    std::vector<const char*> mStaticPhysicalCameraIds;
    std::vector<String8> mStaticPhysicalCameraIdValues;
};

#endif // _ACAMERA_METADATA_H