diff options
author | Stephane Letz <letz@grame.fr> | 2012-03-22 15:13:21 +0100 |
---|---|---|
committer | Stephane Letz <letz@grame.fr> | 2012-03-22 15:13:21 +0100 |
commit | 85b14bd45dd6f8c16294faad485ae2db79c8abfe (patch) | |
tree | 1ffa306ecd2a7edf5d35a08e2c335be98beb8026 | |
parent | 43990aee85b3b5e492627c55957f111c94a30a21 (diff) | |
download | jack2-85b14bd45dd6f8c16294faad485ae2db79c8abfe.tar.gz |
Correct JackFrameTimer::ResetFrameTime for new Fons DLL model.
-rw-r--r-- | common/JackEngineControl.cpp | 2 | ||||
-rw-r--r-- | common/JackEngineControl.h | 2 | ||||
-rw-r--r-- | common/JackFrameTimer.cpp | 5 | ||||
-rw-r--r-- | common/JackFrameTimer.h | 2 |
4 files changed, 4 insertions, 7 deletions
diff --git a/common/JackEngineControl.cpp b/common/JackEngineControl.cpp index cd1adad4..f757cd88 100644 --- a/common/JackEngineControl.cpp +++ b/common/JackEngineControl.cpp @@ -97,7 +97,7 @@ void JackEngineControl::ResetRollingUsecs() void JackEngineControl::NotifyXRun(jack_time_t callback_usecs, float delayed_usecs) { - ResetFrameTime(callback_usecs); // Is this still necessary? SL 03/21/2012 + ResetFrameTime(callback_usecs); fXrunDelayedUsecs = delayed_usecs; if (delayed_usecs > fMaxDelayedUsecs) { fMaxDelayedUsecs = delayed_usecs; diff --git a/common/JackEngineControl.h b/common/JackEngineControl.h index 87263150..f6d32f44 100644 --- a/common/JackEngineControl.h +++ b/common/JackEngineControl.h @@ -162,7 +162,7 @@ struct SERVER_EXPORT JackEngineControl : public JackShmMem void ResetFrameTime(jack_time_t callback_usecs) { - fFrameTimer.ResetFrameTime(fSampleRate, callback_usecs, fPeriodUsecs); + fFrameTimer.ResetFrameTime(callback_usecs); } void ReadFrameTime(JackTimer* timer) diff --git a/common/JackFrameTimer.cpp b/common/JackFrameTimer.cpp index a3bd2b15..56cbb6ec 100644 --- a/common/JackFrameTimer.cpp +++ b/common/JackFrameTimer.cpp @@ -122,15 +122,12 @@ void JackFrameTimer::IncFrameTime(jack_nframes_t buffer_size, jack_time_t callba IncFrameTimeAux(buffer_size, callback_usecs, period_usecs); } -void JackFrameTimer::ResetFrameTime(jack_nframes_t frames_rate, jack_time_t callback_usecs, jack_time_t period_usecs) +void JackFrameTimer::ResetFrameTime(jack_time_t callback_usecs) { if (!fFirstWakeUp) { // ResetFrameTime may be called by a xrun/delayed wakeup on the first cycle JackTimer* timer = WriteNextStateStart(); - jack_nframes_t period_size_guess = (jack_nframes_t)(frames_rate * ((timer->fNextWakeUp - timer->fCurrentWakeup) / 1000000.0)); - timer->fFrames += ((callback_usecs - timer->fNextWakeUp) / period_size_guess) * period_size_guess; timer->fCurrentWakeup = callback_usecs; timer->fCurrentCallback = callback_usecs; - timer->fNextWakeUp = callback_usecs + period_usecs; WriteNextStateStop(); TrySwitchState(); // always succeed since there is only one writer } diff --git a/common/JackFrameTimer.h b/common/JackFrameTimer.h index a9c2b7a6..a32e7423 100644 --- a/common/JackFrameTimer.h +++ b/common/JackFrameTimer.h @@ -93,7 +93,7 @@ class SERVER_EXPORT JackFrameTimer : public JackAtomicState<JackTimer> {} void InitFrameTime(); - void ResetFrameTime(jack_nframes_t frames_rate, jack_time_t callback_usecs, jack_time_t period_usecs); + void ResetFrameTime(jack_time_t callback_usecs); void IncFrameTime(jack_nframes_t buffer_size, jack_time_t callback_usecs, jack_time_t period_usecs); void ReadFrameTime(JackTimer* timer); |