remove tight loop in GetPage, and return B_LAST_BUFFER_ERROR properly from GetNextChunk instead
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5776 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -48,9 +48,13 @@ oggReader::GetPage(ogg_page * page, int read_size, bool short_page)
|
|||||||
while (result == 0) {
|
while (result == 0) {
|
||||||
char * buffer = ogg_sync_buffer(&fSync,read_size);
|
char * buffer = ogg_sync_buffer(&fSync,read_size);
|
||||||
ssize_t bytes = Source()->Read(buffer,read_size);
|
ssize_t bytes = Source()->Read(buffer,read_size);
|
||||||
|
if (bytes == 0) {
|
||||||
|
TRACE("oggReader::GetPage: Read: no data\n");
|
||||||
|
return B_LAST_BUFFER_ERROR;
|
||||||
|
}
|
||||||
if (bytes < 0) {
|
if (bytes < 0) {
|
||||||
TRACE("oggReader::GetPage: Read: error\n");
|
TRACE("oggReader::GetPage: Read: error\n");
|
||||||
return B_ERROR;
|
return bytes;
|
||||||
}
|
}
|
||||||
if (ogg_sync_wrote(&fSync,bytes) != 0) {
|
if (ogg_sync_wrote(&fSync,bytes) != 0) {
|
||||||
TRACE("oggReader::GetPage: ogg_sync_wrote failed?: error\n");
|
TRACE("oggReader::GetPage: ogg_sync_wrote failed?: error\n");
|
||||||
@@ -251,8 +255,9 @@ oggReader::GetNextChunk(void *cookie,
|
|||||||
while (ogg_stream_packetpeek(stream,NULL) != 1) {
|
while (ogg_stream_packetpeek(stream,NULL) != 1) {
|
||||||
ogg_page page;
|
ogg_page page;
|
||||||
do {
|
do {
|
||||||
if (GetPage(&page) != B_OK) {
|
status_t status = GetPage(&page);
|
||||||
return B_ERROR;
|
if (status != B_OK) {
|
||||||
|
return status;
|
||||||
}
|
}
|
||||||
} while (ogg_page_serialno(&page) != stream->serialno);
|
} while (ogg_page_serialno(&page) != stream->serialno);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user