Skip to main content

fmod/
sound_group.rs

1use std::{self, rc::Rc};
2use log;
3use crate::{ll, fmod_result, System};
4
5#[derive(Clone, Debug, PartialEq)]
6pub struct SoundGroup {
7  inner  : Rc <Inner>,
8  system : System
9}
10
11#[derive(PartialEq)]
12struct Inner (*mut ll::FMOD_SOUNDGROUP);
13
14impl SoundGroup {
15  #[inline]
16  pub fn from_raw_parts (raw : *mut ll::FMOD_SOUNDGROUP, system : System)
17    -> Self
18  {
19    let inner = Rc::new (Inner (raw));
20    SoundGroup { inner, system }
21  }
22
23  #[inline]
24  #[expect(dead_code)]
25  fn raw (&self) -> *mut ll::FMOD_SOUNDGROUP {
26    self.inner.0
27  }
28
29  #[inline]
30  pub (crate) fn raw_mut (&mut self) -> *mut ll::FMOD_SOUNDGROUP {
31    self.inner.0
32  }
33}
34
35impl std::fmt::Debug for Inner {
36  fn fmt (&self, f : &mut std::fmt::Formatter) -> std::fmt::Result {
37    write!(f, "{:p}", self.0)
38  }
39}
40
41impl Drop for Inner {
42  fn drop (&mut self) {
43    unsafe {
44      let _ = fmod_result!(ll::FMOD_SoundGroup_Release (self.0)).map_err (
45        |err| log::error!("error releasing FMOD SoundGroup@{:p}: {:?}", self.0, err)
46      );
47    }
48  }
49}