00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include "JackSystemDeps.h"
00022 #include "JackFreewheelDriver.h"
00023 #include "JackEngineControl.h"
00024 #include "JackLockedEngine.h"
00025
00026 namespace Jack
00027 {
00028
00029 int JackFreewheelDriver::Process()
00030 {
00031 if (fIsMaster) {
00032 jack_log("JackFreewheelDriver::Process master %lld", fEngineControl->fTimeOutUsecs);
00033 JackDriver::CycleTakeBeginTime();
00034 fEngine->Process(fBeginDateUst, fEndDateUst);
00035 fGraphManager->ResumeRefNum(&fClientControl, fSynchroTable);
00036 if (fGraphManager->SuspendRefNum(&fClientControl, fSynchroTable, FREEWHEEL_DRIVER_TIMEOUT * 1000000) < 0) {
00037 jack_error("JackFreewheelDriver::ProcessSync SuspendRefNum error");
00038
00039 return 0;
00040 }
00041 } else {
00042 fGraphManager->ResumeRefNum(&fClientControl, fSynchroTable);
00043 if (fEngineControl->fSyncMode) {
00044 if (fGraphManager->SuspendRefNum(&fClientControl, fSynchroTable, fEngineControl->fTimeOutUsecs) < 0) {
00045 jack_error("JackFreewheelDriver::ProcessSync SuspendRefNum error");
00046 return -1;
00047 }
00048 }
00049 }
00050 return 0;
00051 }
00052
00053 }