Skip to content

daemon: Make sure to load newly supported actions after a refresh

This fixes applying display brightness from the current profile configuration at startup. This had failed on Wayland since 6.2 when KWin brightness integration was added. Here's why.

In a Wayland session, the ScreenBrightnessControl action will not initially announce itself as supported because KWin outputs are only known after a brief asynchronous delay. Instead, it gets enabled as a reaction to the first displayAdded/displayIdsChanged signal.

The refreshActions() slot that handles this would create and register the action object, but the action's loadAction() and onProfileLoaded() methods were not called. Because the profile was already loaded earlier, these methods would not get called until the next profile change (or wake-up from sleep).

We now take care to call these action methods, but only when the profile is active. They won't be called during Core initialization, and if the login session is currently inactive.

BUG: 497362


Also part of this MR:

daemon: Ensure legacy display ids exist before comparing the first one

Prevents a crash if a handler for a ScreenBrightnessController signal calls setBrightness() before legacy display ids were updated. I'm not aware of any such crash happening for end users so far, but my next patch (i.e. the above main commit) will exercise this code path, requiring this fix.


CC @zamundaaa, @nicolasfella, @iasensio - thanks in advance for your review(s)

Edited by Jakob Petsovits

Merge request reports

Loading