mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-06 19:56:42 +01:00
fix infinite recursion (10x @TalesFromTheArmchair)
This commit is contained in:
parent
3853d71601
commit
05ee05485e
1 changed files with 19 additions and 20 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue