WIP: Fixed errors, cleanup

custom
ailurux 7 months ago
parent 4353779810
commit d4bad11130
  1. 6
      src/tangara/audio/audio_fsm.cpp
  2. 5
      src/tangara/database/records.cpp
  3. 12
      src/tangara/database/track.cpp
  4. 7
      src/tangara/database/track.hpp

@ -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);
});
}

@ -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>();

@ -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

@ -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;
};
/*

Loading…
Cancel
Save