Wayland: avoid binding disabled outputs to surfaces

We don't need to bind disabled outputs to surfaces that overlaps them.
This prevents error down the line and warnings about ignoring surface.enter events with Qt.

BUG: 419749
master
Méven Car 2020-05-26 15:14:13 +00:00 committed by Méven Car
parent e3044e619e
commit f0f465ccbd
2 changed files with 8 additions and 4 deletions

View File

@ -628,6 +628,8 @@ void DrmOutput::dpmsFinishOff()
if (isEnabled()) {
waylandOutput()->setDpmsMode(toWaylandDpmsMode(m_dpmsModePending));
m_backend->createDpmsFilter();
} else {
waylandOutput()->setDpmsMode(toWaylandDpmsMode(DpmsMode::Off));
}
}

View File

@ -1941,10 +1941,12 @@ void XdgShellClient::updateClientOutputs()
{
QVector<OutputInterface *> clientOutputs;
const auto outputs = waylandServer()->display()->outputs();
for (OutputInterface *output : outputs) {
const QRect outputGeometry(output->globalPosition(), output->pixelSize() / output->scale());
if (frameGeometry().intersects(outputGeometry)) {
clientOutputs << output;
for (const auto output : outputs) {
if (output->dpmsMode() == OutputInterface::DpmsMode::On)) {
const QRect outputGeometry(output->globalPosition(), output->pixelSize() / output->scale());
if (frameGeometry().intersects(outputGeometry)) {
clientOutputs << output;
}
}
}
surface()->setOutputs(clientOutputs);