summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephane Letz <letz@grame.fr>2012-03-22 15:13:21 +0100
committerStephane Letz <letz@grame.fr>2012-03-22 15:13:21 +0100
commit85b14bd45dd6f8c16294faad485ae2db79c8abfe (patch)
tree1ffa306ecd2a7edf5d35a08e2c335be98beb8026
parent43990aee85b3b5e492627c55957f111c94a30a21 (diff)
downloadjack2-85b14bd45dd6f8c16294faad485ae2db79c8abfe.tar.gz
Correct JackFrameTimer::ResetFrameTime for new Fons DLL model.
-rw-r--r--common/JackEngineControl.cpp2
-rw-r--r--common/JackEngineControl.h2
-rw-r--r--common/JackFrameTimer.cpp5
-rw-r--r--common/JackFrameTimer.h2
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);