Prevent powerdevil from calling DPMS extension calls when DPMS extension isn't…

Authored by alnikiforov on Feb 10 2020, 11:26 AM.

Description

Prevent powerdevil from calling DPMS extension calls when DPMS extension isn't present

When DPMS extension isn't available, powerdevil unexpectedly exits due to a call to unavailable DPMS function and Qt error handling for such errors.

Following is a full log of powerdevil process when DPMS extension isn't present:

$ /usr/libexec/kf5/org_kde_powerdevil
QDBusArgument: read from a write-only object
QDBusArgument: read from a write-only object
QDBusArgument: read from a write-only object
powerdevil: No outputs have backlight property
powerdevil: Xrandr not supported, trying ddc, helper
powerdevil: [DDCutilBrightness]  0 display(s) were detected
powerdevil: org.kde5.powerdevil.backlighthelper.brightness failed
powerdevil: DPMS extension not available
The X11 connection broke: Unsupported extension used (code 2)
XIO:  fatal IO error 2 (No such file or directory) on X server ":0"
      after 408 requests (408 known processed) with 0 events remaining.

This was detected while running KDE in a VM (without x2go). For some reason 'xdpyinfo -queryExtensions' didn't report DPMS extension being present.

Only change in 'PowerDevilDPMSAction::onProfileUnload' was required to fix issue for me, but changes in other functions could be needed as well, thus I implemented it. Two calls to m_helper, 'm_helper->startFade()' and 'm_helper->stopFade()', had corresponding conditions left intact since it looks like it doesn't call DPMS-related functions.

Differential Revision: https://phabricator.kde.org/D27278