| @@ -4194,8 +4194,6 @@ private: | |||||
| PostPonedJackEvent nullEvent; | PostPonedJackEvent nullEvent; | ||||
| carla_zeroStruct(nullEvent); | carla_zeroStruct(nullEvent); | ||||
| CarlaStringList clientsToIgnore, portsToIgnore; | |||||
| for (; ! shouldThreadExit();) | for (; ! shouldThreadExit();) | ||||
| { | { | ||||
| if (fIsInternalClient) | if (fIsInternalClient) | ||||
| @@ -4217,10 +4215,6 @@ private: | |||||
| continue; | continue; | ||||
| } | } | ||||
| // 1st iteration, fill in what things we ought to ignore and do unregistration | |||||
| clientsToIgnore.clear(); | |||||
| portsToIgnore.clear(); | |||||
| for (LinkedList<PostPonedJackEvent>::Itenerator it = events.begin2(); it.valid(); it.next()) | for (LinkedList<PostPonedJackEvent>::Itenerator it = events.begin2(); it.valid(); it.next()) | ||||
| { | { | ||||
| const PostPonedJackEvent& ev(it.getValue(nullEvent)); | const PostPonedJackEvent& ev(it.getValue(nullEvent)); | ||||
| @@ -4228,87 +4222,45 @@ private: | |||||
| switch (ev.type) | switch (ev.type) | ||||
| { | { | ||||
| case PostPonedJackEvent::kTypeClientRegister: | |||||
| clientsToIgnore.removeOne(ev.clientRegister.name); | |||||
| break; | |||||
| case PostPonedJackEvent::kTypeClientUnregister: | |||||
| clientsToIgnore.append(ev.clientUnregister.name); | |||||
| handleJackClientUnregistrationCallback(ev.clientUnregister.name); | |||||
| break; | |||||
| case PostPonedJackEvent::kTypePortRegister: | |||||
| portsToIgnore.removeOne(ev.portRegister.fullName); | |||||
| break; | |||||
| case PostPonedJackEvent::kTypePortUnregister: | |||||
| portsToIgnore.append(ev.portUnregister.fullName); | |||||
| handleJackPortUnregistrationCallback(ev.portUnregister.fullName); | |||||
| break; | |||||
| case PostPonedJackEvent::kTypePortDisconnect: | |||||
| handleJackPortDisconnectCallback(ev.portDisconnect.portNameA, | |||||
| ev.portDisconnect.portNameB); | |||||
| break; | |||||
| default: | |||||
| case PostPonedJackEvent::kTypeNull: | |||||
| break; | break; | ||||
| } | |||||
| } | |||||
| // 2nd iteration, go through all postponed events while ignoring some | |||||
| for (LinkedList<PostPonedJackEvent>::Itenerator it = events.begin2(); it.valid(); it.next()) | |||||
| { | |||||
| const PostPonedJackEvent& ev(it.getValue(nullEvent)); | |||||
| CARLA_SAFE_ASSERT_CONTINUE(ev.type != PostPonedJackEvent::kTypeNull); | |||||
| switch (ev.type) | |||||
| { | |||||
| case PostPonedJackEvent::kTypeNull: | |||||
| case PostPonedJackEvent::kTypeClientRegister: | |||||
| case PostPonedJackEvent::kTypeClientUnregister: | case PostPonedJackEvent::kTypeClientUnregister: | ||||
| case PostPonedJackEvent::kTypePortUnregister: | |||||
| case PostPonedJackEvent::kTypePortDisconnect: | |||||
| handleJackClientUnregistrationCallback(ev.clientUnregister.name); | |||||
| break; | break; | ||||
| case PostPonedJackEvent::kTypeClientPositionChange: | case PostPonedJackEvent::kTypeClientPositionChange: | ||||
| { | |||||
| char uuidstr[JACK_UUID_STRING_SIZE]; | |||||
| carla_zeroStruct(uuidstr); | |||||
| jackbridge_uuid_unparse(ev.clientPositionChange.uuid, uuidstr); | |||||
| if (clientsToIgnore.count() != 0) | |||||
| { | |||||
| const CarlaRecursiveMutexLocker crml(fThreadSafeMetadataMutex); | |||||
| const char* const clientname = jackbridge_get_client_name_by_uuid(fClient, uuidstr); | |||||
| CARLA_SAFE_ASSERT_CONTINUE(clientname != nullptr && clientname[0] != '\0'); | |||||
| if (clientsToIgnore.contains(clientname)) | |||||
| continue; | |||||
| } | |||||
| handleJackClientPositionChangeCallback(ev.clientPositionChange.uuid); | handleJackClientPositionChangeCallback(ev.clientPositionChange.uuid); | ||||
| break; | break; | ||||
| } | |||||
| case PostPonedJackEvent::kTypePortRegister: | case PostPonedJackEvent::kTypePortRegister: | ||||
| if (portsToIgnore.contains(ev.portRegister.fullName)) | |||||
| continue; | |||||
| handleJackPortRegistrationCallback(ev.portRegister.fullName, | handleJackPortRegistrationCallback(ev.portRegister.fullName, | ||||
| ev.portRegister.shortName, | ev.portRegister.shortName, | ||||
| ev.portRegister.hints); | ev.portRegister.hints); | ||||
| break; | break; | ||||
| case PostPonedJackEvent::kTypePortUnregister: | |||||
| handleJackPortUnregistrationCallback(ev.portUnregister.fullName); | |||||
| break; | |||||
| case PostPonedJackEvent::kTypePortConnect: | case PostPonedJackEvent::kTypePortConnect: | ||||
| if (portsToIgnore.contains(ev.portConnect.portNameA)) | |||||
| continue; | |||||
| if (portsToIgnore.contains(ev.portConnect.portNameB)) | |||||
| continue; | |||||
| handleJackPortConnectCallback(ev.portConnect.portNameA, | handleJackPortConnectCallback(ev.portConnect.portNameA, | ||||
| ev.portConnect.portNameB); | ev.portConnect.portNameB); | ||||
| break; | break; | ||||
| case PostPonedJackEvent::kTypePortDisconnect: | |||||
| handleJackPortDisconnectCallback(ev.portDisconnect.portNameA, | |||||
| ev.portDisconnect.portNameB); | |||||
| break; | |||||
| case PostPonedJackEvent::kTypePortRename: | case PostPonedJackEvent::kTypePortRename: | ||||
| handleJackPortRenameCallback(ev.portRename.oldFullName, | handleJackPortRenameCallback(ev.portRename.oldFullName, | ||||
| ev.portRename.newFullName, | ev.portRename.newFullName, | ||||
| ev.portRename.newShortName); | ev.portRename.newShortName); | ||||
| break; | break; | ||||
| case PostPonedJackEvent::kTypeClientRegister: | |||||
| break; | |||||
| } | } | ||||
| } | } | ||||
| @@ -4316,8 +4268,6 @@ private: | |||||
| } | } | ||||
| events.clear(); | events.clear(); | ||||
| clientsToIgnore.clear(); | |||||
| portsToIgnore.clear(); | |||||
| } | } | ||||
| #endif // BUILD_BRIDGE | #endif // BUILD_BRIDGE | ||||