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:
parent
d3f4da370b
commit
5498b37938
3 changed files with 7 additions and 4 deletions
|
@ -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())
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue