[roll] Roll fuchsia [virtual_audio_driver] Fix use-after-free bugs and simplify

This CL makes multiple cleanups in the virtual audio driver:

1. The code has been refactored and simplified to (hopefully) eliminate
   use-after-free and memory leak bugs. We now use shared_ptr
   everywhere, except that posted tasks use weak_ptr as a way to cancel
   the posted task if the service shuts down before the task runs.

2. The FIDL API has been simplified. The driver now serves the Control
   protocol directly and input and output devices are created by
   explicit AddInput and AddOutput methods. In this new API, we can no
   longer reuse the same FIDL channel for a new device. This feature was
   never used and lead to potentially-buggy stateful code which has is
   now stateless (and hopefully simpler).

3. The driver now uses LLCPP bindings instead of the C bindings.

4. All users connect directly to the FIDL protocol via the device
   filesystem. This deprecates the VirtualAudioService, which has been
   mostly deleted, except for an empty BUILD rule that will be removed
   in a follow-up CL.

Multiply: audio-device-enumerator-test
Multiply: audio-renderer-pipeline-test
Multiply: usage-reporter-test
Original-Fixed: 98435
Original-Bug: 90445
Original-Bug: 95629
Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/670470
Original-Revision: f86d53d54744ff23db6afdd42f1dad7e537175ad
GitOrigin-RevId: 0d5dd386a4c619e188ce107170d8ab5fa1d06565
Change-Id: I9c79e3a4b66b509f5901e80366e668ca8ee3866c
1 file changed
tree: 70db7f609a61894acff014860a1c113553dcb108
  1. infra/
  2. third_party/
  3. cts
  4. firmware
  5. flower
  6. jiri.lock
  7. minimal
  8. prebuilts
  9. README.md
  10. stem
  11. test_durations
  12. toolchain
README.md

Integration

This repository contains Fuchsia's Global Integration manifest files.

Making changes

All changes should be made to the internal version of this repository. Our infrastructure automatically updates this version when the internal one changes.

Currently all changes must be made by a Google employee. Non-Google employees wishing to make a change can ask for assistance via the IRC channel #fuchsia on Freenode.

Obtaining the source

First install Jiri.

Next run:

$ jiri init
$ jiri import minimal https://fuchsia.googlesource.com/integration
$ jiri update

Third party

Third party projects should have their own subdirectory in ./third_party.