From d4bad111302f4603386fe4462a0b29590822cff8 Mon Sep 17 00:00:00 2001 From: ailurux Date: Thu, 12 Sep 2024 21:08:11 +1000 Subject: [PATCH] WIP: Fixed errors, cleanup --- src/tangara/audio/audio_fsm.cpp | 6 +++--- src/tangara/database/records.cpp | 5 +++-- src/tangara/database/track.cpp | 12 ++++++++++++ src/tangara/database/track.hpp | 7 ++++--- 4 files changed, 22 insertions(+), 8 deletions(-) diff --git a/src/tangara/audio/audio_fsm.cpp b/src/tangara/audio/audio_fsm.cpp index d9b81832..131e0a06 100644 --- a/src/tangara/audio/audio_fsm.cpp +++ b/src/tangara/audio/audio_fsm.cpp @@ -393,9 +393,9 @@ auto AudioState::updateSavedPosition(std::string uri, uint32_t position) if (!track) { return; } - database::TrackData data = track->data(); - data.last_position = position; - db->setTrackData(*id, data); + auto data = track->data().clone(); + data->last_position = position; + db->setTrackData(*id, *data); }); } diff --git a/src/tangara/database/records.cpp b/src/tangara/database/records.cpp index 9e898c0b..012cda64 100644 --- a/src/tangara/database/records.cpp +++ b/src/tangara/database/records.cpp @@ -105,13 +105,14 @@ auto ParseDataValue(const leveldb::Slice& slice) -> std::shared_ptr { return nullptr; } auto vals = item->asArray(); - if (vals->size() != 7 || vals->get(0)->type() != cppbor::UINT || + if (vals->size() != 8 || vals->get(0)->type() != cppbor::UINT || vals->get(1)->type() != cppbor::TSTR || vals->get(2)->type() != cppbor::UINT || vals->get(3)->type() != cppbor::SIMPLE || vals->get(4)->type() != cppbor::UINT || vals->get(5)->type() != cppbor::UINT || - vals->get(6)->type() != cppbor::MAP) { + vals->get(6)->type() != cppbor::MAP || + vals->get(7)->type() != cppbor::UINT) { return {}; } auto res = std::make_shared(); diff --git a/src/tangara/database/track.cpp b/src/tangara/database/track.cpp index cdb7543c..e737dd37 100644 --- a/src/tangara/database/track.cpp +++ b/src/tangara/database/track.cpp @@ -293,4 +293,16 @@ auto TrackTags::Hash() const -> uint64_t { return komihash_stream_final(&stream); } +auto database::TrackData::clone() const -> std::shared_ptr { + auto data = std::make_shared(); + data->id = id; + data->filepath = filepath; + data->tags_hash = tags_hash; + data->individual_tag_hashes = individual_tag_hashes; + data->is_tombstoned = is_tombstoned; + data->modified_at = modified_at; + data->last_position = last_position; + return data; +} + } // namespace database diff --git a/src/tangara/database/track.hpp b/src/tangara/database/track.hpp index 2bcf4db1..6e2bacce 100644 --- a/src/tangara/database/track.hpp +++ b/src/tangara/database/track.hpp @@ -170,10 +170,11 @@ struct TrackData { std::pair modified_at; uint32_t last_position; - TrackData(const TrackData& other) = default; - TrackData& operator=(TrackData& other) = default; + TrackData(const TrackData&& other) = delete; + TrackData& operator=(TrackData& other) = delete; + auto clone() const -> std::shared_ptr; - bool operator==(const TrackData&) const = default; + bool operator==(const TrackData&) const = delete; }; /*