From 85b14bd45dd6f8c16294faad485ae2db79c8abfe Mon Sep 17 00:00:00 2001 From: Stephane Letz Date: Thu, 22 Mar 2012 15:13:21 +0100 Subject: [PATCH] Correct JackFrameTimer::ResetFrameTime for new Fons DLL model. --- common/JackEngineControl.cpp | 2 +- common/JackEngineControl.h | 2 +- common/JackFrameTimer.cpp | 5 +---- 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 {} 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);