| @@ -4194,8 +4194,6 @@ private: | |||
| PostPonedJackEvent nullEvent; | |||
| carla_zeroStruct(nullEvent); | |||
| CarlaStringList clientsToIgnore, portsToIgnore; | |||
| for (; ! shouldThreadExit();) | |||
| { | |||
| if (fIsInternalClient) | |||
| @@ -4217,10 +4215,6 @@ private: | |||
| 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()) | |||
| { | |||
| const PostPonedJackEvent& ev(it.getValue(nullEvent)); | |||
| @@ -4228,87 +4222,45 @@ private: | |||
| 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; | |||
| } | |||
| } | |||
| // 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::kTypePortUnregister: | |||
| case PostPonedJackEvent::kTypePortDisconnect: | |||
| handleJackClientUnregistrationCallback(ev.clientUnregister.name); | |||
| break; | |||
| 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); | |||
| break; | |||
| } | |||
| case PostPonedJackEvent::kTypePortRegister: | |||
| if (portsToIgnore.contains(ev.portRegister.fullName)) | |||
| continue; | |||
| handleJackPortRegistrationCallback(ev.portRegister.fullName, | |||
| ev.portRegister.shortName, | |||
| ev.portRegister.hints); | |||
| break; | |||
| case PostPonedJackEvent::kTypePortUnregister: | |||
| handleJackPortUnregistrationCallback(ev.portUnregister.fullName); | |||
| break; | |||
| case PostPonedJackEvent::kTypePortConnect: | |||
| if (portsToIgnore.contains(ev.portConnect.portNameA)) | |||
| continue; | |||
| if (portsToIgnore.contains(ev.portConnect.portNameB)) | |||
| continue; | |||
| handleJackPortConnectCallback(ev.portConnect.portNameA, | |||
| ev.portConnect.portNameB); | |||
| break; | |||
| case PostPonedJackEvent::kTypePortDisconnect: | |||
| handleJackPortDisconnectCallback(ev.portDisconnect.portNameA, | |||
| ev.portDisconnect.portNameB); | |||
| break; | |||
| case PostPonedJackEvent::kTypePortRename: | |||
| handleJackPortRenameCallback(ev.portRename.oldFullName, | |||
| ev.portRename.newFullName, | |||
| ev.portRename.newShortName); | |||
| break; | |||
| case PostPonedJackEvent::kTypeClientRegister: | |||
| break; | |||
| } | |||
| } | |||
| @@ -4316,8 +4268,6 @@ private: | |||
| } | |||
| events.clear(); | |||
| clientsToIgnore.clear(); | |||
| portsToIgnore.clear(); | |||
| } | |||
| #endif // BUILD_BRIDGE | |||