Invalidate all clients when bit-perfect client is active.

When a bit-perfect client becomes active, invalidate all clients on outputs that don't have an active patch or share at least one device with bit-perfect output.

Bug: 366372464
Test: enable touch sound, play DSD file
Flag: EXEMPT bugfix
Change-Id: I3ed943335ce42b2c93ccdec0f3d60e4a2e48120a
diff --git a/services/audiopolicy/managerdefault/AudioPolicyManager.cpp b/services/audiopolicy/managerdefault/AudioPolicyManager.cpp
index 796e3c7..679a980 100644
--- a/services/audiopolicy/managerdefault/AudioPolicyManager.cpp
+++ b/services/audiopolicy/managerdefault/AudioPolicyManager.cpp
@@ -2379,8 +2379,8 @@
                 // the bit-perfect sink so that it is guaranteed only bit-perfect stream is active.
                 PortHandleVector clientsToInvalidate;
                 for (size_t i = 0; i < mOutputs.size(); i++) {
-                    if (mOutputs[i] == outputDesc ||
-                        mOutputs[i]->devices().filter(outputDesc->devices()).isEmpty()) {
+                    if (mOutputs[i] == outputDesc || (!mOutputs[i]->devices().isEmpty() &&
+                        mOutputs[i]->devices().filter(outputDesc->devices()).isEmpty())) {
                         continue;
                     }
                     for (const auto& c : mOutputs[i]->getClientIterable()) {