| @@ -149,8 +149,9 @@ void JackClient::SetupDriverSync(bool freewheel) | |||
| } | |||
| } else { | |||
| jack_log("JackClient::SetupDriverSync driver sem in normal mode"); | |||
| for (int i = 0; i < GetEngineControl()->fDriverNum; i++) | |||
| for (int i = 0; i < GetEngineControl()->fDriverNum; i++) { | |||
| fSynchroTable[i].SetFlush(false); | |||
| } | |||
| } | |||
| } | |||
| @@ -339,7 +340,7 @@ int JackClient::HandleLatencyCallback(int status) | |||
| list<jack_port_id_t>::iterator it; | |||
| for (it = fPortList.begin(); it != fPortList.end(); it++) { | |||
| JackPort* port = GetGraphManager()->GetPort(*it); | |||
| JackPort* port = GetGraphManager()->GetPort(*it); | |||
| if ((port->GetFlags() & JackPortIsOutput) && (mode == JackPlaybackLatency)) { | |||
| GetGraphManager()->RecalculateLatency(*it, mode); | |||
| } | |||
| @@ -68,8 +68,9 @@ struct JackClientControl : public JackShmMemAble | |||
| void Init(const char* name, int pid, int refnum, int uuid) | |||
| { | |||
| strcpy(fName, name); | |||
| for (int i = 0; i < kMaxNotification; i++) | |||
| for (int i = 0; i < kMaxNotification; i++) { | |||
| fCallback[i] = false; | |||
| } | |||
| // Always activated | |||
| fCallback[kAddClient] = true; | |||
| fCallback[kRemoveClient] = true; | |||
| @@ -69,8 +69,9 @@ bool JackConnectionManager::IsLoopPathAux(int ref1, int ref2) const | |||
| return true; | |||
| } else { | |||
| for (int i = 0; i < CLIENT_NUM && output[i] != EMPTY; i++) { // Otherwise recurse for all ref1 outputs | |||
| if (IsLoopPathAux(output[i], ref2)) | |||
| if (IsLoopPathAux(output[i], ref2)) { | |||
| return true; // Stop when a path is found | |||
| } | |||
| } | |||
| return false; | |||
| } | |||
| @@ -304,8 +305,9 @@ void JackConnectionManager::TopologicalSort(std::vector<jack_int_t>& sorted) | |||
| tmp.ClearItem(refnum, dst); | |||
| jack_int_t output_ref2[CLIENT_NUM]; | |||
| tmp.GetOutputTable1(dst, output_ref2); | |||
| if (HasNoConnection(output_ref2)) | |||
| if (HasNoConnection(output_ref2)) { | |||
| level.insert(dst); | |||
| } | |||
| } | |||
| } | |||
| } | |||
| @@ -380,8 +382,9 @@ bool JackConnectionManager::IsDirectConnection(int ref1, int ref2) const | |||
| int JackConnectionManager::GetInputRefNum(jack_port_id_t port_index) const | |||
| { | |||
| for (int i = 0; i < CLIENT_NUM; i++) { | |||
| if (fInputPort[i].CheckItem(port_index)) | |||
| if (fInputPort[i].CheckItem(port_index)) { | |||
| return i; | |||
| } | |||
| } | |||
| return -1; | |||
| @@ -393,8 +396,9 @@ int JackConnectionManager::GetInputRefNum(jack_port_id_t port_index) const | |||
| int JackConnectionManager::GetOutputRefNum(jack_port_id_t port_index) const | |||
| { | |||
| for (int i = 0; i < CLIENT_NUM; i++) { | |||
| if (fOutputPort[i].CheckItem(port_index)) | |||
| if (fOutputPort[i].CheckItem(port_index)) { | |||
| return i; | |||
| } | |||
| } | |||
| return -1; | |||
| @@ -422,8 +426,9 @@ bool JackConnectionManager::IncFeedbackConnection(jack_port_id_t port_src, jack_ | |||
| jack_log("JackConnectionManager::IncFeedbackConnection ref1 = %ld ref2 = %ld", ref1, ref2); | |||
| assert(ref1 >= 0 && ref2 >= 0); | |||
| if (ref1 != ref2) | |||
| if (ref1 != ref2) { | |||
| DirectConnect(ref2, ref1); | |||
| } | |||
| return fLoopFeedback.IncConnection(ref1, ref2); // Add the feedback connection | |||
| } | |||
| @@ -437,8 +442,9 @@ bool JackConnectionManager::DecFeedbackConnection(jack_port_id_t port_src, jack_ | |||
| jack_log("JackConnectionManager::DecFeedbackConnection ref1 = %ld ref2 = %ld", ref1, ref2); | |||
| assert(ref1 >= 0 && ref2 >= 0); | |||
| if (ref1 != ref2) | |||
| if (ref1 != ref2) { | |||
| DirectDisconnect(ref2, ref1); | |||
| } | |||
| return fLoopFeedback.DecConnection(ref1, ref2); // Remove the feedback connection | |||
| } | |||
| @@ -271,10 +271,7 @@ int JackEngine::ComputeTotalLatencies() | |||
| int JackEngine::ClientNotify(JackClientInterface* client, int refnum, const char* name, int notify, int sync, const char* message, int value1, int value2) | |||
| { | |||
| if (!client) { | |||
| return 0; | |||
| } | |||
| // Check if notification is needed | |||
| if (!client->GetClientControl()->fCallback[notify]) { | |||
| jack_log("JackEngine::ClientNotify: no callback for notification = %ld", notify); | |||
| return 0; | |||
| @@ -342,7 +339,10 @@ void JackEngine::NotifyRemoveClient(const char* name, int refnum) | |||
| { | |||
| // Notify existing clients (including the one beeing suppressed) of the removed client | |||
| for (int i = 0; i < CLIENT_NUM; i++) { | |||
| ClientNotify(fClientTable[i], refnum, name, kRemoveClient, false, "", 0, 0); | |||
| JackClientInterface* client = fClientTable[refnum]; | |||
| if (client) { | |||
| ClientNotify(fClientTable[i], refnum, name, kRemoveClient, false, "", 0, 0); | |||
| } | |||
| } | |||
| } | |||
| @@ -425,6 +425,7 @@ void JackEngine::NotifyActivate(int refnum) | |||
| int JackEngine::GetInternalClientName(int refnum, char* name_res) | |||
| { | |||
| JackClientInterface* client = fClientTable[refnum]; | |||
| assert(client); | |||
| strncpy(name_res, client->GetClientControl()->fName, JACK_CLIENT_NAME_SIZE); | |||
| return 0; | |||
| } | |||
| @@ -712,6 +713,7 @@ int JackEngine::ClientExternalClose(int refnum) | |||
| { | |||
| jack_log("JackEngine::ClientExternalClose ref = %ld", refnum); | |||
| JackClientInterface* client = fClientTable[refnum]; | |||
| assert(client); | |||
| int res = ClientCloseAux(refnum, true); | |||
| client->Close(); | |||
| delete client; | |||
| @@ -887,6 +889,7 @@ int JackEngine::PortUnRegister(int refnum, jack_port_id_t port_index) | |||
| { | |||
| jack_log("JackEngine::PortUnRegister ref = %ld port_index = %ld", refnum, port_index); | |||
| JackClientInterface* client = fClientTable[refnum]; | |||
| assert(client); | |||
| // Disconnect port ==> notification is sent | |||
| PortDisconnect(refnum, port_index, ALL_PORTS); | |||
| @@ -1080,6 +1083,7 @@ void JackEngine::SessionNotify(int refnum, const char *target, jack_session_even | |||
| int JackEngine::SessionReply(int refnum) | |||
| { | |||
| JackClientInterface* client = fClientTable[refnum]; | |||
| assert(client); | |||
| char uuid_buf[JACK_UUID_SIZE]; | |||
| snprintf(uuid_buf, sizeof(uuid_buf), "%d", client->GetClientControl()->fSessionID); | |||
| fSessionResult->fCommandList.push_back(JackSessionCommand(uuid_buf, | |||
| @@ -70,11 +70,11 @@ struct SERVER_EXPORT JackEngineControl : public JackShmMem | |||
| bool fVerbose; | |||
| // CPU Load | |||
| jack_time_t fPrevCycleTime; | |||
| jack_time_t fCurCycleTime; | |||
| jack_time_t fSpareUsecs; | |||
| jack_time_t fMaxUsecs; | |||
| jack_time_t fRollingClientUsecs[JACK_ENGINE_ROLLING_COUNT]; | |||
| jack_time_t fPrevCycleTime; | |||
| jack_time_t fCurCycleTime; | |||
| jack_time_t fSpareUsecs; | |||
| jack_time_t fMaxUsecs; | |||
| jack_time_t fRollingClientUsecs[JACK_ENGINE_ROLLING_COUNT]; | |||
| unsigned int fRollingClientUsecsCnt; | |||
| int fRollingClientUsecsIndex; | |||
| int fRollingInterval; | |||
| @@ -46,8 +46,9 @@ namespace Jack | |||
| JackFilter() | |||
| { | |||
| for (int i = 0; i < MAX_SIZE; i++) | |||
| for (int i = 0; i < MAX_SIZE; i++) { | |||
| fTable[i] = 0; | |||
| } | |||
| } | |||
| void AddValue(jack_time_t val) | |||
| @@ -59,8 +60,9 @@ namespace Jack | |||
| jack_time_t GetVal() | |||
| { | |||
| jack_time_t mean = 0; | |||
| for (int i = 0; i < MAX_SIZE; i++) | |||
| for (int i = 0; i < MAX_SIZE; i++) { | |||
| mean += fTable[i]; | |||
| } | |||
| return mean / MAX_SIZE; | |||
| } | |||
| @@ -47,7 +47,7 @@ enum NotificationType { | |||
| kQUIT = 16, | |||
| kSessionCallback = 17, | |||
| kLatencyCallback = 18, | |||
| kMaxNotification | |||
| kMaxNotification = 64 // To keep some room in JackClientControl fCallback table | |||
| }; | |||
| } // end of namespace | |||
| @@ -167,11 +167,11 @@ OSStatus JackCoreAudioAdapter::AudioHardwareNotificationCallback(AudioHardwarePr | |||
| switch (inPropertyID) { | |||
| case kAudioHardwarePropertyDevices: { | |||
| jack_log("JackCoreAudioAdapter::AudioHardwareNotificationCallback kAudioHardwarePropertyDevices"); | |||
| DisplayDeviceNames(); | |||
| break; | |||
| } | |||
| case kAudioHardwarePropertyDevices: { | |||
| jack_log("JackCoreAudioAdapter::AudioHardwareNotificationCallback kAudioHardwarePropertyDevices"); | |||
| DisplayDeviceNames(); | |||
| break; | |||
| } | |||
| } | |||
| return noErr; | |||