Merge pull request #1189 from rhysd/queue-return-result

Return `Result` from `AudioQueue::queue` instead of `bool`
This commit is contained in:
Cobrand
2021-12-31 14:47:55 +01:00
committed by GitHub
2 changed files with 22 additions and 1 deletions
+1 -1
View File
@@ -36,7 +36,7 @@ fn main() -> Result<(), String> {
let target_bytes = 48_000 * 4;
let wave = gen_wave(target_bytes);
device.queue(&wave);
device.queue_audio(&wave)?;
// Start playback
device.resume();
+21
View File
@@ -750,6 +750,10 @@ impl<'a, Channel: AudioFormatNum> AudioQueue<Channel> {
/// Adds data to the audio queue.
#[doc(alias = "SDL_QueueAudio")]
#[deprecated(
since = "0.36.0",
note = "Users should instead use AudioQueue::queue_audio"
)]
pub fn queue(&self, data: &[Channel]) -> bool {
let result = unsafe {
sys::SDL_QueueAudio(
@@ -761,6 +765,23 @@ impl<'a, Channel: AudioFormatNum> AudioQueue<Channel> {
result == 0
}
/// Adds data to the audio queue.
#[doc(alias = "SDL_QueueAudio")]
pub fn queue_audio(&self, data: &[Channel]) -> Result<(), String> {
let result = unsafe {
sys::SDL_QueueAudio(
self.device_id.id(),
data.as_ptr() as *const c_void,
(data.len() * mem::size_of::<Channel>()) as u32,
)
};
if result == 0 {
Ok(())
} else {
Err(get_error())
}
}
#[doc(alias = "SDL_GetQueuedAudioSize")]
pub fn size(&self) -> u32 {
unsafe { sys::SDL_GetQueuedAudioSize(self.device_id.id()) }