Browse Source

Correct JackFrameTimer::ResetFrameTime for new Fons DLL model.

tags/1.9.9.5
Stephane Letz 13 years ago
parent
commit
85b14bd45d
4 changed files with 4 additions and 7 deletions
  1. +1
    -1
      common/JackEngineControl.cpp
  2. +1
    -1
      common/JackEngineControl.h
  3. +1
    -4
      common/JackFrameTimer.cpp
  4. +1
    -1
      common/JackFrameTimer.h

+ 1
- 1
common/JackEngineControl.cpp View File

@@ -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;


+ 1
- 1
common/JackEngineControl.h View File

@@ -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)


+ 1
- 4
common/JackFrameTimer.cpp View File

@@ -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
}


+ 1
- 1
common/JackFrameTimer.h View File

@@ -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);



Loading…
Cancel
Save