Diffusion KWin 82d286046907

[colorcorrection] Night Color - blue light filter at nighttime

Authored by romangg on Dec 11 2017, 9:43 AM.

Description

[colorcorrection] Night Color - blue light filter at nighttime

With Wayland KWin needs to provide certain services, which were provided
before that by the Xserver. One of these is gamma correction, which includes
the - by many people beloved - functionality to reduce the blue light at
nighttime. This patch provides the KWin part of that. It is self contained,
but in the end will work in tandem with a lib in Plasma Workspace and a KCM
in Plasma Desktop, which can be used to configure Night Color.

  • Three modi:
    • Automatic: The location and sun timings are determined automatically (location data updates will be provided by the workspace)
    • Location: The sun timings are determined by fixed location data
    • Timings: The sun timings are set manually by the user
  • Color temperature value changes are smoothly applied:
    • Configuration changes, which lead to other current values are changed in a quick way over a few seconds
    • Changes on sunrise and sunset are applied slowly over the course of few minutes till several hours depending on the configuration
  • The current color value is set immediately at startup or after suspend phases and VT switches. There is no flickering.
  • All configuration is done via a DBus interface, changed values are tested on correctness and applied atomically
  • Self contained mechanism, speaks directly to the hardware by setting the gamma ramps on the CRTC
  • Currently working on DRM backend, extensible to other platform backends in the future
  • The code is written in a way to make the classes later easily extendable to also provide normal color correction, as it's currently done by KGamma on X

Test Plan:
Manually with the workspace parts and added integration tests in KWin using
the virtual backend.

BUG:371494

Reviewers: KWin, graesslin

Subscribers: kwin, plasma-devel, KWin

Tags: KWin

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