82d2860469
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 |
||
---|---|---|
.. | ||
CMakeLists.txt | ||
drm.json | ||
drm_backend.cpp | ||
drm_backend.h | ||
drm_buffer.cpp | ||
drm_buffer.h | ||
drm_buffer_gbm.cpp | ||
drm_buffer_gbm.h | ||
drm_inputeventfilter.cpp | ||
drm_inputeventfilter.h | ||
drm_object.cpp | ||
drm_object.h | ||
drm_object_connector.cpp | ||
drm_object_connector.h | ||
drm_object_crtc.cpp | ||
drm_object_crtc.h | ||
drm_object_plane.cpp | ||
drm_object_plane.h | ||
drm_output.cpp | ||
drm_output.h | ||
drm_pointer.h | ||
egl_gbm_backend.cpp | ||
egl_gbm_backend.h | ||
gbm_surface.cpp | ||
gbm_surface.h | ||
logging.cpp | ||
logging.h | ||
scene_qpainter_drm_backend.cpp | ||
scene_qpainter_drm_backend.h | ||
screens_drm.cpp | ||
screens_drm.h |