CDROM: Update position while seeking for GetlocP

Fixes track selection in WipEout.
This commit is contained in:
Connor McLaughlin
2020-05-20 01:52:53 +10:00
parent 7bb087fe73
commit 5d46556b7d
5 changed files with 90 additions and 22 deletions

View File

@ -78,6 +78,25 @@ void CDROMAsyncReader::QueueReadSector(CDImage::LBA lba)
m_do_read_cv.notify_one();
}
bool CDROMAsyncReader::ReadSectorUncached(CDImage::LBA lba, CDImage::SubChannelQ* subq, SectorBuffer* data)
{
WaitForReadToComplete();
if (m_media->GetPositionOnDisc() != lba && !m_media->Seek(lba))
{
Log_WarningPrintf("Seek to LBA %u failed", lba);
return false;
}
if ((subq && !m_media->ReadSubChannelQ(subq)) || (data && !m_media->ReadRawSector(data->data())))
{
Log_WarningPrintf("Read of LBA %u failed", lba);
return false;
}
return true;
}
void CDROMAsyncReader::QueueReadNextSector()
{
if (!IsUsingThread())