From b879372352767e6668517e274978bebf09bd868e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Thu, 13 Dec 2007 15:44:41 +0000 Subject: [PATCH] Added the timeout to QueueCommand::MakeSpace() as well. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23121 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/add-ons/accelerants/intel_extreme/engine.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/add-ons/accelerants/intel_extreme/engine.cpp b/src/add-ons/accelerants/intel_extreme/engine.cpp index 15109b5633..48efc265ea 100644 --- a/src/add-ons/accelerants/intel_extreme/engine.cpp +++ b/src/add-ons/accelerants/intel_extreme/engine.cpp @@ -105,6 +105,7 @@ QueueCommands::MakeSpace(uint32 size) { ASSERT((size & 1) == 0); size *= sizeof(uint32); + bigtime_t start = system_time(); while (fRingBuffer.space_left < size) { // wait until more space is free @@ -116,8 +117,13 @@ QueueCommands::MakeSpace(uint32 size) 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); + } } fRingBuffer.space_left -= size;