summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorailurux <ailuruxx@gmail.com>2024-09-12 21:08:11 +1000
committerailurux <ailuruxx@gmail.com>2024-09-12 21:08:11 +1000
commitd4bad111302f4603386fe4462a0b29590822cff8 (patch)
tree7d7a3ea505d09fc200dd1348c103098cceef269b /src
parent43537798108ce240f1d1131db8611d0bf11a3e0c (diff)
downloadtangara-fw-d4bad111302f4603386fe4462a0b29590822cff8.tar.gz
WIP: Fixed errors, cleanup
Diffstat (limited to 'src')
-rw-r--r--src/tangara/audio/audio_fsm.cpp6
-rw-r--r--src/tangara/database/records.cpp5
-rw-r--r--src/tangara/database/track.cpp12
-rw-r--r--src/tangara/database/track.hpp7
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<TrackData> {
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<TrackData>();
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<TrackData> {
+ auto data = std::make_shared<TrackData>();
+ 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<uint16_t, uint16_t> 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<TrackData>;
- bool operator==(const TrackData&) const = default;
+ bool operator==(const TrackData&) const = delete;
};
/*