mirror of https://github.com/PCSX2/pcsx2.git
FileSystem: Add ReadFileWithPartialProgress for multiple files
This commit is contained in:
parent
5a8921dd22
commit
58d13dac34
|
@ -1230,6 +1230,14 @@ size_t FileSystem::ReadFileWithProgress(std::FILE* fp, void* dst, size_t length,
|
||||||
{
|
{
|
||||||
progress->SetProgressRange(100);
|
progress->SetProgressRange(100);
|
||||||
|
|
||||||
|
return FileSystem::ReadFileWithPartialProgress(fp, dst, length, progress, 0, 100, error, chunk_size);
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t FileSystem::ReadFileWithPartialProgress(std::FILE* fp, void* dst, size_t length,
|
||||||
|
ProgressCallback* progress, int startPercent, int endPercent, Error* error, size_t chunk_size)
|
||||||
|
{
|
||||||
|
const int deltaPercent = endPercent - startPercent;
|
||||||
|
|
||||||
size_t done = 0;
|
size_t done = 0;
|
||||||
while (done < length)
|
while (done < length)
|
||||||
{
|
{
|
||||||
|
@ -1243,7 +1251,7 @@ size_t FileSystem::ReadFileWithProgress(std::FILE* fp, void* dst, size_t length,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
progress->SetProgressValue((done * 100) / length);
|
progress->SetProgressValue(startPercent + (done * deltaPercent) / length);
|
||||||
done += read_size;
|
done += read_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -144,6 +144,8 @@ namespace FileSystem
|
||||||
bool WriteStringToFile(const char* filename, const std::string_view sv);
|
bool WriteStringToFile(const char* filename, const std::string_view sv);
|
||||||
size_t ReadFileWithProgress(std::FILE* fp, void* dst, size_t length, ProgressCallback* progress,
|
size_t ReadFileWithProgress(std::FILE* fp, void* dst, size_t length, ProgressCallback* progress,
|
||||||
Error* error = nullptr, size_t chunk_size = 16 * 1024 * 1024);
|
Error* error = nullptr, size_t chunk_size = 16 * 1024 * 1024);
|
||||||
|
size_t ReadFileWithPartialProgress(std::FILE* fp, void* dst, size_t length, ProgressCallback* progress,
|
||||||
|
int startPercent, int endPercent, Error* error = nullptr, size_t chunk_size = 16 * 1024 * 1024);
|
||||||
|
|
||||||
/// creates a directory in the local filesystem
|
/// creates a directory in the local filesystem
|
||||||
/// if the directory already exists, the return value will be true.
|
/// if the directory already exists, the return value will be true.
|
||||||
|
|
Loading…
Reference in New Issue