diff --git a/src/waveform/visualplayposition.cpp b/src/waveform/visualplayposition.cpp index acb7556518fd..031533536209 100644 --- a/src/waveform/visualplayposition.cpp +++ b/src/waveform/visualplayposition.cpp @@ -59,7 +59,7 @@ double VisualPlayPosition::getAtNextVSync(VSyncThread* vSyncThread) { if (m_valid) { VisualPlayPositionData data = m_data.getValue(); int refToVSync = vSyncThread->fromTimerToNextSyncMicros(data.m_referenceTime); - int offset = refToVSync - data.m_callbackEntrytoDac; + int offset = data.m_callbackEntrytoDac; offset = math_min(offset, m_audioBufferMicros * kMaxOffsetBufferCnt); double playPos = data.m_enginePlayPos; // load playPos for the first sample in Buffer // add the offset for the position of the sample that will be transferred to the DAC @@ -78,11 +78,9 @@ void VisualPlayPosition::getPlaySlipAtNextVSync(VSyncThread* vSyncThread, double if (m_valid) { VisualPlayPositionData data = m_data.getValue(); - int refToVSync = vSyncThread->fromTimerToNextSyncMicros(data.m_referenceTime); - int offset = refToVSync - data.m_callbackEntrytoDac; - offset = math_min(offset, m_audioBufferMicros * kMaxOffsetBufferCnt); double playPos = data.m_enginePlayPos; // load playPos for the first sample in Buffer - playPos += data.m_positionStep * offset * data.m_rate / m_audioBufferMicros; + playPos += data.m_positionStep * data.m_callbackEntrytoDac * + data.m_rate / m_audioBufferMicros; *pPlayPosition = playPos; *pSlipPosition = data.m_slipPosition; } diff --git a/src/waveform/vsyncthread.cpp b/src/waveform/vsyncthread.cpp index 2105d9221a2f..9bc55bbe628e 100644 --- a/src/waveform/vsyncthread.cpp +++ b/src/waveform/vsyncthread.cpp @@ -55,33 +55,9 @@ void VSyncThread::run() { } else { // if (m_vSyncMode == ST_TIMER) { emit vsyncRender(); // renders the new waveform. - // wait until rendering was scheduled. It might be delayed due a - // pending swap (depends one driver vSync settings) m_semaVsyncSlot.acquire(); - // qDebug() << "ST_TIMER " << lastMicros << restMicros; - int remainingForSwap = m_waitToSwapMicros - static_cast( - m_timer.elapsed().toIntegerMicros()); - // waiting for interval by sleep - if (remainingForSwap > 100) { - usleep(remainingForSwap); - } - - // swaps the new waveform to front in case of gl-wf - emit vsyncSwap(); - - // wait until swap occurred. It might be delayed due to driver vSync - // settings. - m_semaVsyncSlot.acquire(); - - // <- Assume we are VSynced here -> int lastSwapTime = static_cast(m_timer.restart().toIntegerMicros()); - if (remainingForSwap < 0) { - // Our swapping call was already delayed - // The real swap might happens on the following VSync, depending on driver settings - m_droppedFrames++; // Count as Real Time Error - } - // try to stay in right intervals m_waitToSwapMicros = m_syncIntervalTimeMicros + ((m_waitToSwapMicros - lastSwapTime) % m_syncIntervalTimeMicros); } diff --git a/src/waveform/waveformwidgetfactory.cpp b/src/waveform/waveformwidgetfactory.cpp index bed2fc66fc12..47ae97774925 100644 --- a/src/waveform/waveformwidgetfactory.cpp +++ b/src/waveform/waveformwidgetfactory.cpp @@ -721,7 +721,7 @@ void WaveformWidgetFactory::swap() { if (glw->context() != QGLContext::currentContext()) { glw->makeCurrent(); } - glw->swapBuffers(); + //glw->swapBuffers(); } //qDebug() << "swap x" << m_vsyncThread->elapsed(); } diff --git a/src/waveform/widgets/glsimplewaveformwidget.cpp b/src/waveform/widgets/glsimplewaveformwidget.cpp index 3213640c98fd..94a6c6729e56 100644 --- a/src/waveform/widgets/glsimplewaveformwidget.cpp +++ b/src/waveform/widgets/glsimplewaveformwidget.cpp @@ -34,8 +34,6 @@ GLSimpleWaveformWidget::GLSimpleWaveformWidget(const QString& group, QWidget* pa setAttribute(Qt::WA_NoSystemBackground); setAttribute(Qt::WA_OpaquePaintEvent); - setAutoBufferSwap(false); - m_initSuccess = init(); } diff --git a/src/waveform/widgets/glslwaveformwidget.cpp b/src/waveform/widgets/glslwaveformwidget.cpp index 02a5b9657da1..5794760fa7e0 100644 --- a/src/waveform/widgets/glslwaveformwidget.cpp +++ b/src/waveform/widgets/glslwaveformwidget.cpp @@ -66,8 +66,6 @@ GLSLWaveformWidget::GLSLWaveformWidget( setAttribute(Qt::WA_NoSystemBackground); setAttribute(Qt::WA_OpaquePaintEvent); - setAutoBufferSwap(false); - m_initSuccess = init(); } diff --git a/src/waveform/widgets/glvsynctestwidget.cpp b/src/waveform/widgets/glvsynctestwidget.cpp index 6b60e76977eb..b36aa9df9210 100644 --- a/src/waveform/widgets/glvsynctestwidget.cpp +++ b/src/waveform/widgets/glvsynctestwidget.cpp @@ -36,8 +36,6 @@ GLVSyncTestWidget::GLVSyncTestWidget(const QString& group, QWidget* parent) setAttribute(Qt::WA_NoSystemBackground); setAttribute(Qt::WA_OpaquePaintEvent); - setAutoBufferSwap(false); - m_initSuccess = init(); qDebug() << "GLVSyncTestWidget.isSharing() =" << isSharing(); } diff --git a/src/waveform/widgets/glwaveformwidget.cpp b/src/waveform/widgets/glwaveformwidget.cpp index f746ed70f29c..bbd7ac848269 100644 --- a/src/waveform/widgets/glwaveformwidget.cpp +++ b/src/waveform/widgets/glwaveformwidget.cpp @@ -36,8 +36,6 @@ GLWaveformWidget::GLWaveformWidget(const QString& group, QWidget* parent) setAttribute(Qt::WA_NoSystemBackground); setAttribute(Qt::WA_OpaquePaintEvent); - setAutoBufferSwap(false); - m_initSuccess = init(); }