diff --git a/audio/aidl/default/EffectFactory.cpp b/audio/aidl/default/EffectFactory.cpp index ba5b14163d..e3894f9517 100644 --- a/audio/aidl/default/EffectFactory.cpp +++ b/audio/aidl/default/EffectFactory.cpp @@ -145,6 +145,7 @@ ndk::ScopedAStatus Factory::createEffect(const AudioUuid& in_impl_uuid, *_aidl_return = effectSp; ndk::SpAIBinder effectBinder = effectSp->asBinder(); AIBinder_setMinSchedulerPolicy(effectBinder.get(), SCHED_NORMAL, ANDROID_PRIORITY_AUDIO); + AIBinder_setInheritRt(effectBinder.get(), true); mEffectMap[std::weak_ptr(effectSp)] = std::make_pair(in_impl_uuid, std::move(effectBinder)); return ndk::ScopedAStatus::ok(); diff --git a/audio/aidl/default/Module.cpp b/audio/aidl/default/Module.cpp index d48729fd5f..0d6151e65b 100644 --- a/audio/aidl/default/Module.cpp +++ b/audio/aidl/default/Module.cpp @@ -874,8 +874,9 @@ ndk::ScopedAStatus Module::openInputStream(const OpenInputStreamArguments& in_ar RETURN_STATUS_IF_ERROR( streamWrapper.setConnectedDevices(findConnectedDevices(in_args.portConfigId))); } - AIBinder_setMinSchedulerPolicy(streamWrapper.getBinder().get(), SCHED_NORMAL, - ANDROID_PRIORITY_AUDIO); + auto streamBinder = streamWrapper.getBinder(); + AIBinder_setMinSchedulerPolicy(streamBinder.get(), SCHED_NORMAL, ANDROID_PRIORITY_AUDIO); + AIBinder_setInheritRt(streamBinder.get(), true); mStreams.insert(port->id, in_args.portConfigId, std::move(streamWrapper)); _aidl_return->stream = std::move(stream); return ndk::ScopedAStatus::ok(); @@ -920,8 +921,9 @@ ndk::ScopedAStatus Module::openOutputStream(const OpenOutputStreamArguments& in_ RETURN_STATUS_IF_ERROR( streamWrapper.setConnectedDevices(findConnectedDevices(in_args.portConfigId))); } - AIBinder_setMinSchedulerPolicy(streamWrapper.getBinder().get(), SCHED_NORMAL, - ANDROID_PRIORITY_AUDIO); + auto streamBinder = streamWrapper.getBinder(); + AIBinder_setMinSchedulerPolicy(streamBinder.get(), SCHED_NORMAL, ANDROID_PRIORITY_AUDIO); + AIBinder_setInheritRt(streamBinder.get(), true); mStreams.insert(port->id, in_args.portConfigId, std::move(streamWrapper)); _aidl_return->stream = std::move(stream); return ndk::ScopedAStatus::ok(); diff --git a/audio/aidl/default/include/core-impl/ChildInterface.h b/audio/aidl/default/include/core-impl/ChildInterface.h index f5f1855aab..161f6db6c0 100644 --- a/audio/aidl/default/include/core-impl/ChildInterface.h +++ b/audio/aidl/default/include/core-impl/ChildInterface.h @@ -48,9 +48,9 @@ struct ChildInterface : private std::pair, ndk::SpAIBinder> { } AIBinder* getBinder() { if (this->second.get() == nullptr) { - this->second = this->first->asBinder(); - AIBinder_setMinSchedulerPolicy(this->second.get(), SCHED_NORMAL, - ANDROID_PRIORITY_AUDIO); + const auto binder = this->second = this->first->asBinder(); + AIBinder_setMinSchedulerPolicy(binder.get(), SCHED_NORMAL, ANDROID_PRIORITY_AUDIO); + AIBinder_setInheritRt(binder.get(), true); } return this->second.get(); }