Commit 78d79d96 authored by Stephane Letz's avatar Stephane Letz
Browse files

Correct FW and thread RT Drop/Acquire.

parent 2023aae7
...@@ -232,7 +232,10 @@ int JackClient::ClientNotify(int refnum, const char* name, int notify, int sync, ...@@ -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, ...@@ -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) { // Acquire RT only when the RT thread is actually running
if (fThread.AcquireRealTime() < 0) { if (GetEngineControl()->fRealTime && fThread.GetStatus() == JackThread::kRunning) {
if (fThread.AcquireRealTime(GetEngineControl()->fClientPriority) < 0) {
jack_error("JackClient::AcquireRealTime error"); jack_error("JackClient::AcquireRealTime error");
} }
} }
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment