Browse Source

Accpetable fix for long standing Freewheel mode bug.

tags/v1.9.10
Stephane Letz 11 years ago
parent
commit
d2be14ddf6
1 changed files with 3 additions and 9 deletions
  1. +3
    -9
      common/JackFreewheelDriver.cpp

+ 3
- 9
common/JackFreewheelDriver.cpp View File

@@ -30,32 +30,26 @@ namespace Jack


int JackFreewheelDriver::Process() int JackFreewheelDriver::Process()
{ {
int res = 0;

jack_log("JackFreewheelDriver::Process master %lld", fEngineControl->fTimeOutUsecs); jack_log("JackFreewheelDriver::Process master %lld", fEngineControl->fTimeOutUsecs);
JackDriver::CycleTakeBeginTime(); JackDriver::CycleTakeBeginTime();


if (fEngine->Process(fBeginDateUst, fEndDateUst)) { if (fEngine->Process(fBeginDateUst, fEndDateUst)) {


// Resume connected clients in the graph // Resume connected clients in the graph
if (ResumeRefNum()) {
if (ResumeRefNum() < 0) {
jack_error("JackFreewheelDriver::Process: ResumeRefNum error"); jack_error("JackFreewheelDriver::Process: ResumeRefNum error");
res = -1;
} }


// Special "SuspendRefNum" with longer timeout // Special "SuspendRefNum" with longer timeout
if (SuspendRefNum() < 0) { // Wait for all clients to finish for 10 sec
if (SuspendRefNum() < 0) { // Wait for all clients to finish for FREEWHEEL_DRIVER_TIMEOUT sec
jack_error("JackFreewheelDriver::Process: SuspendRefNum error"); jack_error("JackFreewheelDriver::Process: SuspendRefNum error");
/* We have a client time-out error, but still continue to process, until a better recovery strategy is chosen */
return 0;
} }


} else { // Graph not finished: do not activate it } else { // Graph not finished: do not activate it
jack_error("JackFreewheelDriver::Process: Process error"); jack_error("JackFreewheelDriver::Process: Process error");
res = -1;
} }


return res;
return 0;
} }


// When used in "slave" mode // When used in "slave" mode


Loading…
Cancel
Save