From 5be2f2fcdf85170185eee77030cfb01ab7beb0c2 Mon Sep 17 00:00:00 2001 From: Cobrand Date: Sun, 10 Oct 2021 20:12:08 +0200 Subject: [PATCH] Add closure supports to mixer::set_channel_finished --- src/sdl2/mixer/mod.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/sdl2/mixer/mod.rs b/src/sdl2/mixer/mod.rs index d537b760..d3f8a443 100644 --- a/src/sdl2/mixer/mod.rs +++ b/src/sdl2/mixer/mod.rs @@ -349,21 +349,21 @@ pub fn allocate_channels(numchans: i32) -> i32 { unsafe { mixer::Mix_AllocateChannels(numchans as c_int) as i32 } } -static mut CHANNEL_FINISHED_CALLBACK: Option = None; +static mut CHANNEL_FINISHED_CALLBACK: Option> = None; extern "C" fn c_channel_finished_callback(ch: c_int) { unsafe { match CHANNEL_FINISHED_CALLBACK { None => (), - Some(cb) => cb(Channel(ch as i32)), + Some(ref cb) => cb(Channel(ch as i32)), } } } /// When channel playback is halted, then the specified `channel_finished` function is called. -pub fn set_channel_finished(f: fn(Channel)) { +pub fn set_channel_finished(f: impl Fn(Channel) + 'static) { unsafe { - CHANNEL_FINISHED_CALLBACK = Some(f); + CHANNEL_FINISHED_CALLBACK = Some(Box::new(f)); mixer::Mix_ChannelFinished(Some( c_channel_finished_callback as extern "C" fn(ch: c_int), ));