Fix for b/4173948 - video & audio hang after multiple seeks

Resolves the problem of the file offset being set to a large
value if readAt returns an error instead of number of bytes
read.  I haven't been able to repro the failure yet since
putting in this fix, so we still need to confirm that the player
recovers correctly when the server error occurs.

Change-Id: I963191144835a89310ad1b0ea0863dd536dff564
This commit is contained in:
Jeffrey Tinker
2011-03-29 07:44:43 -07:00
parent 18617b93c6
commit 93d87df37a

View File

@@ -50,24 +50,15 @@ void WVMFileSource::Seek(unsigned long long offset)
size_t WVMFileSource::Read(size_t amount, unsigned char *buffer)
{
size_t result = mDataSource->readAt(mOffset, buffer, amount);
ssize_t result = mDataSource->readAt(mOffset, buffer, amount);
#if 0
// debug code - log packets to files
char filename[32];
static int counter = 0;
sprintf(filename, "/data/wv/buf%d", counter++);
FILE *f = fopen(filename, "w");
if (!f)
LOGE("WVMFileSource: can't open %s", filename);
else {
fwrite(buffer, amount, 1, f);
fclose(f);
if (result < 0) {
LOGE("mDataSource-readAt returned error %d\n", (int)result );
result = 0;
} else {
mOffset += result;
}
LOGD("WVMFileSource::Read(%d bytes to buf=%p)", amount, buffer);
#endif
mOffset += result;
return result;
}