Fix viewport on vertically stacked monitors
Summary: We want to translate by the monitor position, so that needs to be the negative of the position. But Kwin/KScreen treats 0 as the top of all monitors. GL treats 0 as bottom, so that all needs inverting. Hence this should be a positive y value for the viewport. BUG: 386099 BUG: 385655 Test Plan: Had two monitors Side by side was - fine Stacked vertically - still fine Modded X code to extend in y instead of x. 3 monitors worked fine. Nested wayland only seems to support one screen? Reviewers: #plasma Subscribers: plasma-devel, kwin, #kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D8479icc-effect-5.14.5
parent
aa58243a48
commit
5d7e22e5dc
|
@ -194,7 +194,7 @@ bool EglGbmBackend::makeContextCurrent(const Output &output)
|
|||
|
||||
qreal scale = output.output->scale();
|
||||
|
||||
glViewport(-v.x() * scale, (v.height() - overall.height() - v.y()) * scale,
|
||||
glViewport(-v.x() * scale, (v.height() - overall.height() + v.y()) * scale,
|
||||
overall.width() * scale, overall.height() * scale);
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -108,7 +108,7 @@ void EglX11Backend::setupViewport(int screenId)
|
|||
// TODO: are the values correct?
|
||||
|
||||
qreal scale = screens()->scale(screenId);
|
||||
glViewport(-v.x(), v.height() - overall.height() - v.y(), overall.width() * scale, overall.height() * scale);
|
||||
glViewport(-v.x(), v.height() - overall.height() + v.y(), overall.width() * scale, overall.height() * scale);
|
||||
}
|
||||
|
||||
void EglX11Backend::endRenderingFrameForScreen(int screenId, const QRegion &renderedRegion, const QRegion &damagedRegion)
|
||||
|
|
Loading…
Reference in New Issue