Skip to content

Commit 5c791be

Browse files
committed
fmod 1 compat // actions: build for latest mac
1 parent 4485d34 commit 5c791be

File tree

3 files changed

+15
-15
lines changed

3 files changed

+15
-15
lines changed

.github/workflows/rust.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ jobs:
1313
build:
1414
strategy:
1515
matrix:
16-
os: [ubuntu-latest, macos-13]
16+
os: [ubuntu-latest, macos-13, macos-latest]
1717
runs-on: ${{ matrix.os }}
1818

1919
steps:

cassette_player/src/lib.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33

44
use crate::cassette_player::CassettePlayer;
55

6-
use scamble::{expose_dsp, expose_dsp_list};
6+
use scamble::expose_dsp;
77

88
pub mod cassette_player;
99

10-
expose_dsp_list!(CassettePlayer);
10+
expose_dsp!(CassettePlayer);

src/dsp/interop.rs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -330,10 +330,8 @@ extern "C" fn release_callback<D: Dsp>(dsp_state: *mut FMOD_DSP_STATE) -> FMOD_R
330330
unsafe {
331331
CUR_STATE = dsp_state;
332332
let x = (*dsp_state).plugindata as *mut D;
333-
drop(ptr::read(x));
333+
ptr::drop_in_place(x);
334334
alloc::dealloc(x as *mut u8, Layout::new::<D>());
335-
//(*(*dsp_state).functions).free.unwrap()(x, FMOD_MEMORY_NORMAL, DBGSTR.as_ptr() as *const _);
336-
//(*dsp_state).plugindata = ptr::null_mut();
337335
CUR_STATE = ptr::null_mut();
338336
}
339337
FMOD_OK
@@ -435,10 +433,12 @@ extern "C" fn process_callback<D: Dsp>(
435433
let proc = panic::catch_unwind(|| {
436434
let data = &mut *((*dsp_state).plugindata as *mut D);
437435
if op == FMOD_DSP_PROCESS_OPERATION::FMOD_DSP_PROCESS_QUERY {
438-
(*out_buffers).speakermode = FMOD_SPEAKERMODE::FMOD_SPEAKERMODE_STEREO;
439-
*(*out_buffers).bufferchannelmask = 0;
440-
if let Some(channels) = data.preferred_out_channels() {
441-
*(*out_buffers).buffernumchannels = channels as c_int;
436+
if !out_buffers.is_null() {
437+
(*out_buffers).speakermode = FMOD_SPEAKERMODE::FMOD_SPEAKERMODE_STEREO;
438+
*(*out_buffers).bufferchannelmask = 0;
439+
if let Some(channels) = data.preferred_out_channels() {
440+
*(*out_buffers).buffernumchannels = channels as c_int;
441+
}
442442
}
443443
match D::ty() {
444444
DspType::Generator => FMOD_OK,
@@ -449,13 +449,13 @@ extern "C" fn process_callback<D: Dsp>(
449449
},
450450
}
451451
} else {
452-
let in_chan = (*(*in_buffers).buffernumchannels) as usize;
453452
let out_chan = (*(*out_buffers).buffernumchannels) as usize;
454-
let in_ptr = *(*in_buffers).buffers;
455-
let in_data = if in_ptr.is_null() {
456-
&[]
453+
let (in_chan, in_data) = if !in_buffers.is_null() {
454+
let in_chan = (*(*in_buffers).buffernumchannels) as usize;
455+
let in_data = &*slice_from_raw_parts_mut(*(*in_buffers).buffers, length as usize * in_chan);
456+
(in_chan, in_data)
457457
} else {
458-
&*slice_from_raw_parts_mut(in_ptr, length as usize * in_chan)
458+
(0, &[] as &[f32])
459459
};
460460
let out_data = &mut *slice_from_raw_parts_mut(*(*out_buffers).buffers, length as usize * out_chan);
461461
data.read(

0 commit comments

Comments
 (0)