mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-02-02 02:52:30 +02:00
SectorReader: Fix cache line bias
Minor bug where SectorReader::GetEmptyCacheLine was biased towards the first hit.
This commit is contained in:
parent
3f03e2d5fe
commit
9036b9d8e8
@ -57,12 +57,15 @@ SectorReader::Cache* SectorReader::GetEmptyCacheLine()
|
|||||||
{
|
{
|
||||||
Cache* oldest = &m_cache[0];
|
Cache* oldest = &m_cache[0];
|
||||||
// Find the Least Recently Used cache line to replace.
|
// Find the Least Recently Used cache line to replace.
|
||||||
for (auto& cache_entry : m_cache)
|
std::for_each(m_cache.begin() + 1, m_cache.end(), [&](Cache& line) {
|
||||||
|
if (line.IsLessRecentlyUsedThan(*oldest))
|
||||||
{
|
{
|
||||||
if (cache_entry.IsLessRecentlyUsedThan(*oldest))
|
oldest->ShiftLRU();
|
||||||
oldest = &cache_entry;
|
oldest = &line;
|
||||||
cache_entry.ShiftLRU();
|
return;
|
||||||
}
|
}
|
||||||
|
line.ShiftLRU();
|
||||||
|
});
|
||||||
oldest->Reset();
|
oldest->Reset();
|
||||||
return oldest;
|
return oldest;
|
||||||
}
|
}
|
||||||
|
@ -138,9 +138,9 @@ bool DriveReader::ReadMultipleAlignedBlocks(u64 block_num, u64 num_blocks, u8* o
|
|||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
LARGE_INTEGER offset;
|
LARGE_INTEGER offset;
|
||||||
offset.QuadPart = GetSectorSize() * block_num;
|
offset.QuadPart = GetSectorSize() * block_num;
|
||||||
SetFilePointerEx(m_disc_handle, offset, nullptr, FILE_BEGIN);
|
|
||||||
DWORD bytes_read;
|
DWORD bytes_read;
|
||||||
if (!ReadFile(m_disc_handle, out_ptr, static_cast<DWORD>(GetSectorSize() * num_blocks),
|
if (!SetFilePointerEx(m_disc_handle, offset, nullptr, FILE_BEGIN) ||
|
||||||
|
!ReadFile(m_disc_handle, out_ptr, static_cast<DWORD>(GetSectorSize() * num_blocks),
|
||||||
&bytes_read, nullptr))
|
&bytes_read, nullptr))
|
||||||
{
|
{
|
||||||
PanicAlertT("Disc Read Error");
|
PanicAlertT("Disc Read Error");
|
||||||
|
Loading…
Reference in New Issue
Block a user