MCPcopy Create free account
hub / github.com/RustAudio/rust-jack / sync

Function sync

src/client/callbacks.rs:203–238  ·  view source on GitHub ↗
(
    state: jack_sys::jack_transport_state_t,
    pos: *mut jack_sys::jack_position_t,
    data: *mut libc::c_void,
)

Source from the content-addressed store, hash-verified

201}
202
203unsafe extern "C" fn sync<N, P>(
204 state: jack_sys::jack_transport_state_t,
205 pos: *mut jack_sys::jack_position_t,
206 data: *mut libc::c_void,
207) -> libc::c_int
208where
209 N: 'static + Send + Sync + NotificationHandler,
210 P: 'static + Send + ProcessHandler,
211{
212 let res = catch_unwind(|| {
213 let Some(ctx) = CallbackContext::<N, P>::from_raw(data) else {
214 return false;
215 };
216 let is_ready = ctx.process.sync(
217 &ctx.client,
218 crate::Transport::state_from_ffi(state),
219 &*(pos as *mut crate::TransportPosition),
220 );
221 if !is_ready {
222 ctx.mark_invalid(false);
223 }
224 is_ready
225 });
226 match res {
227 Ok(true) => 1,
228 Ok(false) => 0,
229 Err(err) => {
230 if let Some(ctx) = CallbackContext::<N, P>::from_raw(data) {
231 ctx.mark_invalid(true)
232 }
233 eprintln!("{err:?}");
234 std::mem::forget(err);
235 0
236 }
237 }
238}
239
240unsafe extern "C" fn freewheel<N, P>(starting: libc::c_int, data: *mut libc::c_void)
241where

Callers

nothing calls this directly

Calls 2

syncMethod · 0.80
mark_invalidMethod · 0.80

Tested by

no test coverage detected