| @@ -232,7 +232,10 @@ int JackClient::ClientNotify(int refnum, const char* name, int notify, int sync, | |||||
| case kStartFreewheelCallback: | case kStartFreewheelCallback: | ||||
| jack_log("JackClient::kStartFreewheel"); | jack_log("JackClient::kStartFreewheel"); | ||||
| SetupDriverSync(true); | SetupDriverSync(true); | ||||
| fThread.DropRealTime(); // Always done (JACK server in RT mode or not...) | |||||
| // Drop RT only when the RT thread is actually running | |||||
| if (fThread.GetStatus() == JackThread::kRunning) { | |||||
| fThread.DropRealTime(); | |||||
| } | |||||
| if (fFreewheel) { | if (fFreewheel) { | ||||
| fFreewheel(1, fFreewheelArg); | fFreewheel(1, fFreewheelArg); | ||||
| } | } | ||||
| @@ -244,8 +247,9 @@ int JackClient::ClientNotify(int refnum, const char* name, int notify, int sync, | |||||
| if (fFreewheel) { | if (fFreewheel) { | ||||
| fFreewheel(0, fFreewheelArg); | fFreewheel(0, fFreewheelArg); | ||||
| } | } | ||||
| if (GetEngineControl()->fRealTime) { | |||||
| if (fThread.AcquireRealTime() < 0) { | |||||
| // Acquire RT only when the RT thread is actually running | |||||
| if (GetEngineControl()->fRealTime && fThread.GetStatus() == JackThread::kRunning) { | |||||
| if (fThread.AcquireRealTime(GetEngineControl()->fClientPriority) < 0) { | |||||
| jack_error("JackClient::AcquireRealTime error"); | jack_error("JackClient::AcquireRealTime error"); | ||||
| } | } | ||||
| } | } | ||||