Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 514b431c authored by Dean Wheatley's avatar Dean Wheatley Committed by Mikhail Naganov
Browse files

Fix direct/offload thread output devices into MSD

Without this change, direct/offload threads show
"Output devices:  (Empty device types)". Empty device
causes timestamp correction to always be disabled for
output threads requiring timestamp correction.

Test: check direct/offload output into MSD dumpsys output devices
      atest audiopolicy_tests
Bug: 159948389
Change-Id: I7006c9da2f0a228dd49ce0297c30035fef983090
parent c1d40b64
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -5266,6 +5266,12 @@ DeviceVector AudioPolicyManager::getNewOutputDevices(const sp<SwAudioOutputDescr
        }
    }

    // Do not retrieve engine device for outputs through MSD
    // TODO: support explicit routing requests by resetting MSD patch to engine device.
    if (outputDesc->devices() == getMsdAudioOutDevices()) {
        return outputDesc->devices();
    }

    // Honor explicit routing requests only if no client using default routing is active on this
    // input: a specific app can not force routing for other apps by setting a preferred device.
    bool active; // unused
+4 −0
Original line number Diff line number Diff line
@@ -75,6 +75,10 @@ public:
    status_t createAudioPatch(const struct audio_patch *patch,
                              audio_patch_handle_t *handle,
                              int /*delayMs*/) override {
        auto iter = mActivePatches.find(*handle);
        if (iter != mActivePatches.end()) {
            mActivePatches.erase(*handle);
        }
        *handle = mNextPatchHandle++;
        mActivePatches.insert(std::make_pair(*handle, *patch));
        return NO_ERROR;