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 {
|
impl SamplePosition<usize> for Instant {
|
||||||
#[inline] fn sample (&self) -> usize { self.sample.load(Ordering::Relaxed) }
|
#[inline] fn sample (&self) -> usize { self.sample.load(Ordering::Relaxed) }
|
||||||
#[inline] fn set_sample (&self, sample: usize) {
|
#[inline] fn set_sample (&self, s: usize) { self.sample.store(s, Ordering::Relaxed); }
|
||||||
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));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
impl UsecPosition<usize> for Instant {
|
impl UsecPosition<usize> for Instant {
|
||||||
#[inline] fn usec (&self) -> usize { self.usec.load(Ordering::Relaxed) }
|
#[inline] fn usec (&self) -> usize { self.usec.load(Ordering::Relaxed) }
|
||||||
#[inline] fn set_usec (&self, usec: usize) {
|
#[inline] fn set_usec (&self, u: usize) { self.usec.store(u, Ordering::Relaxed); }
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
impl PulsePosition<f64> for Instant {
|
impl PulsePosition<f64> for Instant {
|
||||||
#[inline] fn pulse (&self) -> f64 { self.pulse.load(Ordering::Relaxed) }
|
#[inline] fn pulse (&self) -> f64 { self.pulse.load(Ordering::Relaxed) }
|
||||||
#[inline] fn set_pulse (&self, pulse: f64) {
|
#[inline] fn set_pulse (&self, p: f64) { self.pulse.store(p, Ordering::Relaxed); }
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
impl PulsePosition<usize> for Instant {
|
impl PulsePosition<usize> for Instant {
|
||||||
#[inline] fn pulse (&self) -> usize { self.pulse.load(Ordering::Relaxed) as usize }
|
#[inline] fn pulse (&self) -> usize { self.pulse.load(Ordering::Relaxed) as usize }
|
||||||
#[inline] fn set_pulse (&self, pulse: usize) {
|
#[inline] fn set_pulse (&self, p: usize) { PulsePosition::<f64>::set_pulse(self, p as f64) }
|
||||||
PulsePosition::<f64>::set_pulse(self, pulse as f64)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
impl Instant {
|
impl Instant {
|
||||||
pub fn from_usec (timebase: &Arc<Timebase>, usec: usize) -> Self {
|
pub fn from_usec (timebase: &Arc<Timebase>, usec: usize) -> Self {
|
||||||
|
|
@ -295,6 +279,11 @@ impl Instant {
|
||||||
timebase: timebase.clone(),
|
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 {
|
pub fn from_sample (timebase: &Arc<Timebase>, sample: usize) -> Self {
|
||||||
Self {
|
Self {
|
||||||
sample: sample.into(),
|
sample: sample.into(),
|
||||||
|
|
@ -303,6 +292,11 @@ impl Instant {
|
||||||
timebase: timebase.clone(),
|
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 {
|
pub fn from_pulse (timebase: &Arc<Timebase>, pulse: f64) -> Self {
|
||||||
Self {
|
Self {
|
||||||
pulse: pulse.into(),
|
pulse: pulse.into(),
|
||||||
|
|
@ -311,6 +305,11 @@ impl Instant {
|
||||||
timebase: timebase.clone(),
|
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
|
/// (pulses, name), assuming 96 PPQ
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue