DiscIO: Store partition key directly in ReuseID

This lets us reuse blocks in the case where different partition
entries use the same key (which probably isn't very common).
This commit is contained in:
JosJuice 2021-06-29 08:35:30 +02:00
parent e6dfb08746
commit eafa2784d6
2 changed files with 3 additions and 3 deletions

View File

@ -1305,7 +1305,7 @@ WIARVZFileReader<RVZ>::ProcessAndCompress(CompressThreadState* state, CompressPa
std::vector<u8>& data = parameters.data;
if (AllSame(data))
entry.reuse_id = ReuseID{nullptr, data.size(), false, data.front()};
entry.reuse_id = ReuseID{WiiKey{}, data.size(), false, data.front()};
if constexpr (RVZ)
{
@ -1344,7 +1344,7 @@ WIARVZFileReader<RVZ>::ProcessAndCompress(CompressThreadState* state, CompressPa
const auto create_reuse_id = [&partition_entry, blocks,
blocks_per_chunk](u8 value, bool encrypted, u64 block) {
const u64 size = std::min(blocks - block, blocks_per_chunk) * VolumeWii::BLOCK_DATA_SIZE;
return ReuseID{&partition_entry.partition_key, size, encrypted, value};
return ReuseID{partition_entry.partition_key, size, encrypted, value};
};
const u8* parameters_data_end = parameters.data.data() + parameters.data.size();

View File

@ -258,7 +258,7 @@ private:
#undef COMPARE_TIED
const WiiKey* partition_key;
WiiKey partition_key;
u64 data_size;
bool encrypted;
u8 value;