fix infinite recursion (10x @TalesFromTheArmchair)

This commit is contained in:
🪞👃🪞 2024-10-27 21:59:54 +02:00
parent 3853d71601
commit 05ee05485e

View file

@ -256,35 +256,19 @@ impl PulsesPerQuaver<f64> for Instant {
}
impl SamplePosition<usize> for Instant {
#[inline] fn sample (&self) -> usize { self.sample.load(Ordering::Relaxed) }
#[inline] fn set_sample (&self, sample: usize) {
self.sample.store(sample, Ordering::Relaxed);
self.set_usec(self.timebase.samples_to_usec(sample as f64) as usize);
self.set_pulse(self.timebase.samples_to_pulse(sample as f64));
}
#[inline] fn set_sample (&self, s: usize) { self.sample.store(s, Ordering::Relaxed); }
}
impl UsecPosition<usize> for Instant {
#[inline] fn usec (&self) -> usize { self.usec.load(Ordering::Relaxed) }
#[inline] fn set_usec (&self, usec: usize) {
self.usec.store(usec, Ordering::Relaxed);
self.set_pulse(self.timebase.usecs_to_pulse(usec as f64));
// FIXME: segfault!?!
//self.set_sample(self.timebase.usecs_to_sample(usec as f64) as usize);
}
#[inline] fn set_usec (&self, u: usize) { self.usec.store(u, Ordering::Relaxed); }
}
impl PulsePosition<f64> for Instant {
#[inline] fn pulse (&self) -> f64 { self.pulse.load(Ordering::Relaxed) }
#[inline] fn set_pulse (&self, pulse: f64) {
self.pulse.store(pulse, Ordering::Relaxed);
// FIXME: segfault!?!
//self.set_usec(self.timebase.pulses_to_usec(pulse) as usize);
//self.set_sample(self.timebase.pulses_to_sample(pulse) as usize);
}
#[inline] fn set_pulse (&self, p: f64) { self.pulse.store(p, Ordering::Relaxed); }
}
impl PulsePosition<usize> for Instant {
#[inline] fn pulse (&self) -> usize { self.pulse.load(Ordering::Relaxed) as usize }
#[inline] fn set_pulse (&self, pulse: usize) {
PulsePosition::<f64>::set_pulse(self, pulse as f64)
}
#[inline] fn set_pulse (&self, p: usize) { PulsePosition::<f64>::set_pulse(self, p as f64) }
}
impl Instant {
pub fn from_usec (timebase: &Arc<Timebase>, usec: usize) -> Self {
@ -295,6 +279,11 @@ impl Instant {
timebase: timebase.clone(),
}
}
pub fn update_from_usec (&self, usec: usize) {
self.set_usec(usec);
self.set_pulse(self.timebase.usecs_to_pulse(usec as f64));
self.set_sample(self.timebase.usecs_to_sample(usec as f64) as usize);
}
pub fn from_sample (timebase: &Arc<Timebase>, sample: usize) -> Self {
Self {
sample: sample.into(),
@ -303,6 +292,11 @@ impl Instant {
timebase: timebase.clone(),
}
}
pub fn update_from_sample (&self, sample: usize) {
self.set_sample(sample);
self.set_usec(self.timebase.samples_to_usec(sample as f64) as usize);
self.set_pulse(self.timebase.samples_to_pulse(sample as f64));
}
pub fn from_pulse (timebase: &Arc<Timebase>, pulse: f64) -> Self {
Self {
pulse: pulse.into(),
@ -311,6 +305,11 @@ impl Instant {
timebase: timebase.clone(),
}
}
pub fn update_from_pulse (&self, pulse: f64) {
self.set_pulse(pulse);
self.set_usec(self.timebase.pulses_to_usec(pulse) as usize);
self.set_sample(self.timebase.pulses_to_sample(pulse) as usize);
}
}
/// (pulses, name), assuming 96 PPQ