MCPcopy Create free account
hub / github.com/PCSX2/pcsx2 / BeginRead

Method BeginRead

pcsx2/CDVD/ThreadedFileReader.cpp:346–371  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

344}
345
346void ThreadedFileReader::BeginRead(void* pBuffer, u32 sector, u32 count)
347{
348 s32 blocksize = InternalBlockSize();
349 u64 offset = (u64)sector * (u64)blocksize + m_dataoffset;
350 u32 size = count * blocksize;
351 {
352 std::lock_guard<std::mutex> l(m_mtx);
353 if (TryCachedRead(pBuffer, offset, size, l))
354 return;
355 if (size == 0)
356 {
357 // For readahead
358 m_requestOffset = offset - 1;
359 m_requestSize = 1;
360 m_requestPtr.store(nullptr, std::memory_order_relaxed);
361 }
362 else
363 {
364 m_requestOffset = offset;
365 m_requestSize = size;
366 m_requestPtr.store(pBuffer, std::memory_order_relaxed);
367 }
368 m_requestCancelled.store(false, std::memory_order_relaxed);
369 }
370 m_condition.notify_one();
371}
372
373int ThreadedFileReader::FinishRead(void)
374{

Callers 1

BeginRead2Method · 0.80

Calls 1

notify_oneMethod · 0.80

Tested by

no test coverage detected