Added the timeout to QueueCommand::MakeSpace() as well.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23121 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Axel Dörfler
2007-12-13 15:44:41 +00:00
parent 8818c50507
commit b879372352
@@ -105,6 +105,7 @@ QueueCommands::MakeSpace(uint32 size)
{ {
ASSERT((size & 1) == 0); ASSERT((size & 1) == 0);
size *= sizeof(uint32); size *= sizeof(uint32);
bigtime_t start = system_time();
while (fRingBuffer.space_left < size) { while (fRingBuffer.space_left < size) {
// wait until more space is free // wait until more space is free
@@ -116,8 +117,13 @@ QueueCommands::MakeSpace(uint32 size)
fRingBuffer.space_left = head - fRingBuffer.position; fRingBuffer.space_left = head - fRingBuffer.position;
if (fRingBuffer.space_left < size) if (fRingBuffer.space_left < size) {
if (system_time() > start + 1000000LL) {
TRACE(("intel_extreme: engine stalled\n"));
break;
}
spin(10); spin(10);
}
} }
fRingBuffer.space_left -= size; fRingBuffer.space_left -= size;