Revert "Composite without timer on swap events"
This reverts commit 00bf75d06e
.
See: https://mail.kde.org/pipermail/kwin/2020-January/002999.html
This commit is contained in:
parent
14702651b3
commit
fbb7c241c7
1 changed files with 11 additions and 24 deletions
|
@ -384,30 +384,8 @@ void Compositor::startupWithWorkspace()
|
|||
|
||||
void Compositor::scheduleRepaint()
|
||||
{
|
||||
if (m_state != State::On) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Don't repaint if all outputs are disabled
|
||||
if (!kwinApp()->platform()->areOutputsEnabled()) {
|
||||
return;
|
||||
}
|
||||
|
||||
// TODO: Make this distinction not on the question if there is a swap event but if per screen
|
||||
// rendering? On X we get swap events but they are aligned with the "wrong" screen if
|
||||
// it the primary/first one is not the one with the highest refresh rate.
|
||||
// But on the other side Present extension does not allow to sync with another screen
|
||||
// anyway.
|
||||
|
||||
if (m_scene->hasSwapEvent()) {
|
||||
// TODO: If we don't call it back from the event loop we often crash on Wayland
|
||||
// in AnimationEffect::postPaintScreen. Why?
|
||||
// Theory is that effects call addRepaintFull in there and then performCompositing
|
||||
// is called again while still in the first paint. So queing it here makes sense!
|
||||
QTimer::singleShot(0, this, [this]() { performCompositing(); });
|
||||
} else {
|
||||
if (!compositeTimer.isActive())
|
||||
setCompositeTimer();
|
||||
}
|
||||
}
|
||||
|
||||
void Compositor::stop()
|
||||
|
@ -788,7 +766,16 @@ bool Compositor::windowRepaintsPending() const
|
|||
|
||||
void Compositor::setCompositeTimer()
|
||||
{
|
||||
if (compositeTimer.isActive()) {
|
||||
if (m_state != State::On) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Don't start the timer if we're waiting for a swap event
|
||||
if (m_bufferSwapPending && m_composeAtSwapCompletion)
|
||||
return;
|
||||
|
||||
// Don't start the timer if all outputs are disabled
|
||||
if (!kwinApp()->platform()->areOutputsEnabled()) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue