scenes/opengl: Delegate viewport setup to backend

Only the backend knows what the right viewport rect is. Furthermore,
setting up the viewport before rendering is less error-prone.
This commit is contained in:
Vlad Zahorodnii 2021-06-04 16:07:17 +03:00
parent d3f4da370b
commit 5498b37938
3 changed files with 7 additions and 4 deletions

View file

@ -61,6 +61,10 @@ void EglBackend::screenGeometryChanged(const QSize &size)
QRegion EglBackend::beginFrame(int screenId)
{
Q_UNUSED(screenId)
makeCurrent();
const QSize size = screens()->size();
glViewport(0, 0, size.width(), size.height());
QRegion repaint;
if (supportsBufferAge())

View file

@ -716,9 +716,6 @@ void GlxBackend::screenGeometryChanged(const QSize &size)
overlayWindow()->setup(window);
Xcb::sync();
makeCurrent();
glViewport(0, 0, size.width(), size.height());
// The back buffer contents are now undefined
m_bufferAge = 0;
}
@ -735,6 +732,9 @@ QRegion GlxBackend::beginFrame(int screenId)
QRegion repaint;
makeCurrent();
const QSize size = screens()->size();
glViewport(0, 0, size.width(), size.height());
if (supportsBufferAge())
repaint = accumulatedDamageHistory(m_bufferAge);

View file

@ -832,7 +832,6 @@ void SceneOpenGL::screenGeometryChanged(const QSize &size)
if (!viewportLimitsMatched(size))
return;
Scene::screenGeometryChanged(size);
glViewport(0,0, size.width(), size.height());
m_backend->screenGeometryChanged(size);
GLRenderTarget::setVirtualScreenSize(size);
}