|
1 | 1 | diff --git a/crates/bevy_audio/src/audio_output.rs b/crates/bevy_audio/src/audio_output.rs |
2 | | -index 3e8082e23..624769443 100644 |
| 2 | +index 15236b667..57f116bde 100644 |
3 | 3 | --- a/crates/bevy_audio/src/audio_output.rs |
4 | 4 | +++ b/crates/bevy_audio/src/audio_output.rs |
5 | | -@@ -7,7 +7,7 @@ use bevy_ecs::{prelude::*, system::SystemParam}; |
| 5 | +@@ -6,28 +6,17 @@ use bevy_asset::{Asset, Assets}; |
| 6 | + use bevy_ecs::{prelude::*, system::SystemParam}; |
6 | 7 | use bevy_math::Vec3; |
7 | 8 | use bevy_transform::prelude::GlobalTransform; |
8 | | --use rodio::{OutputStream, OutputStreamHandle, Sink, Source, SpatialSink}; |
9 | | -+use rodio::{OutputStreamHandle, Sink, Source, SpatialSink}; |
| 9 | +-use rodio::{OutputStream, OutputStreamBuilder, Sink, Source, SpatialSink}; |
| 10 | ++use rodio::{OutputStream, Sink, Source, SpatialSink}; |
10 | 11 | use tracing::warn; |
11 | 12 |
|
12 | 13 | use crate::{AudioSink, AudioSinkPlayback}; |
13 | 14 |
|
14 | | -@@ -30,18 +30,10 @@ pub(crate) struct AudioOutput { |
15 | | - |
16 | | - impl Default for AudioOutput { |
17 | | - fn default() -> Self { |
18 | | -- if let Ok((stream, stream_handle)) = OutputStream::try_default() { |
19 | | -- // We leak `OutputStream` to prevent the audio from stopping. |
20 | | -- core::mem::forget(stream); |
21 | | -- Self { |
22 | | -- stream_handle: Some(stream_handle), |
23 | | -- } |
24 | | -- } else { |
25 | | - warn!("No audio device found."); |
26 | | - Self { |
27 | | - stream_handle: None, |
28 | | - } |
29 | | -- } |
30 | | - } |
| 15 | + /// Used internally to play audio on the current "audio device" |
| 16 | +-#[derive(Resource)] |
| 17 | ++#[derive(Resource, Default)] |
| 18 | + pub(crate) struct AudioOutput { |
| 19 | + stream: Option<OutputStream>, |
31 | 20 | } |
32 | 21 |
|
| 22 | +-impl Default for AudioOutput { |
| 23 | +- fn default() -> Self { |
| 24 | +- let stream = OutputStreamBuilder::open_default_stream() |
| 25 | +- .inspect_err(|_err| { |
| 26 | +- warn!("No audio device found."); |
| 27 | +- }) |
| 28 | +- .ok(); |
| 29 | +- Self { stream } |
| 30 | +- } |
| 31 | +-} |
| 32 | +- |
| 33 | + /// Marker for internal use, to despawn entities when playback finishes. |
| 34 | + #[derive(Component, Default)] |
| 35 | + pub struct PlaybackDespawnMarker; |
0 commit comments