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 |
||
---|---|---|
.. | ||
data | ||
effects | ||
helper | ||
scripting | ||
activities_test.cpp | ||
CMakeLists.txt | ||
colorcorrect_nightcolor_test.cpp | ||
debug_console_test.cpp | ||
decoration_input_test.cpp | ||
desktop_window_x11_test.cpp | ||
dont_crash_aurorae_destroy_deco.cpp | ||
dont_crash_cancel_animation.cpp | ||
dont_crash_empty_deco.cpp | ||
dont_crash_glxgears.cpp | ||
dont_crash_no_border.cpp | ||
dont_crash_useractions_menu.cpp | ||
generic_scene_opengl_test.cpp | ||
generic_scene_opengl_test.h | ||
globalshortcuts_test.cpp | ||
idle_inhibition_test.cpp | ||
input_stacking_order.cpp | ||
internal_window.cpp | ||
keyboard_layout_test.cpp | ||
keymap_creation_failure_test.cpp | ||
kwin_wayland_test.cpp | ||
kwin_wayland_test.h | ||
kwinbindings_test.cpp | ||
lockscreen.cpp | ||
maximize_test.cpp | ||
modifier_only_shortcut_test.cpp | ||
move_resize_window_test.cpp | ||
no_xdg_runtime_dir_test.cpp | ||
plasma_surface_test.cpp | ||
plasmawindow_test.cpp | ||
platformcursor.cpp | ||
pointer_constraints_test.cpp | ||
pointer_input.cpp | ||
quick_tiling_test.cpp | ||
scene_opengl_es_test.cpp | ||
scene_opengl_test.cpp | ||
scene_qpainter_test.cpp | ||
screen_changes_test.cpp | ||
screenedge_client_show_test.cpp | ||
shade_test.cpp | ||
shell_client_rules_test.cpp | ||
shell_client_test.cpp | ||
showing_desktop_test.cpp | ||
start_test.cpp | ||
struts_test.cpp | ||
tabbox_test.cpp | ||
test_helpers.cpp | ||
touch_input_test.cpp | ||
transient_no_input_test.cpp | ||
transient_placement.cpp | ||
virtual_desktop_test.cpp | ||
window_rules_test.cpp | ||
window_selection_test.cpp | ||
x11_client_test.cpp | ||
xclipboardsync_test.cpp | ||
xwayland_input_test.cpp |