Only reseek if we have to

Makes it act similarly to before if only 1 node needs the file.
This commit is contained in:
Sally Coolatta 2022-12-19 09:55:52 -05:00
parent cc54d98a39
commit c332d48e9d

View file

@ -103,6 +103,7 @@ typedef struct fileused_s
{
FILE *file;
UINT8 count;
UINT32 position;
} fileused_t;
static fileused_t transferFiles[UINT8_MAX + 1];
@ -895,7 +896,7 @@ void SV_FileSendTicker(void)
if (filesize == -1)
I_Error("Error getting filesize of %s", f->id.filename);
f->size = (UINT32)filesize;
f->size = transferFiles[f->fileid].position = (UINT32)filesize;
}
transfer[i].position = 0;
@ -904,7 +905,11 @@ void SV_FileSendTicker(void)
if (!ram)
{
fseek(transferFiles[f->fileid].file, transfer[i].position, SEEK_SET);
// Seek to the right position if we aren't already there.
if (transferFiles[f->fileid].position != transfer[i].position)
{
fseek(transferFiles[f->fileid].file, transfer[i].position, SEEK_SET);
}
}
// Build a packet containing a file fragment
@ -924,6 +929,8 @@ void SV_FileSendTicker(void)
{
I_Error("SV_FileSendTicker: can't read %s byte on %s at %d because %s",
sizeu1(size), f->id.filename, transfer[i].position, M_FileError(transferFiles[f->fileid].file));
transferFiles[f->fileid].position = (UINT32)(transferFiles[f->fileid].position + size);
}
p->position = LONG(transfer[i].position);