D9463: XRandR: implement scaling support
Daniel Vrátil
noreply at phabricator.kde.org
Thu Dec 21 15:34:17 UTC 2017
dvratil created this revision.
dvratil added reviewers: sebas, davidedmundson.
Restricted Application added a project: Plasma.
Restricted Application added a subscriber: plasma-devel.
REVISION SUMMARY
Add support for reading and updating output scaling. Unlike Wayland,
XRandR supports non-integer scaling factors so a new Config feature
has been introduced for XRandR to be able to tell clients that it
supports non-integer scaling factors. The scaling is represented as
a QTransformation matrix on CRTC and is applied before RRSetCrtcConfig
call.
This becomes useful for people who combine HiDPI and non-HiDPI screens.
In my case, I found out that the only really working solution is to not scale
the applications (since that does not work as you move windows between
screens), but instead of scale the non-HiDPI screen in XRandR by 1.5, thus
achieving a similarily-sized windows on both screens. To make this persistent,
KScreen needs to remember not just resolution and rotation of each screen,
but also their scale, so that it can be applied during session start.
TEST PLAN
Set scaling on one screen to 1.5
xrandr --output DVI-I-1 --scale 1.5x1.5
Logout, log back in, observe KScreen has correctly restored screen configuration, including the scaling.
REPOSITORY
R110 KScreen Library
REVISION DETAIL
https://phabricator.kde.org/D9463
AFFECTED FILES
CMakeLists.txt
backends/xcbwrapper.h
backends/xrandr/xrandr.cpp
backends/xrandr/xrandr.h
backends/xrandr/xrandrconfig.cpp
backends/xrandr/xrandrcrtc.cpp
backends/xrandr/xrandrcrtc.h
backends/xrandr/xrandroutput.cpp
src/config.h
To: dvratil, sebas, davidedmundson
Cc: plasma-devel, ZrenBot, progwolff, lesliezhai, ali-mohamed, jensreuterberg, abetts, sebas, apol, mart
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/plasma-devel/attachments/20171221/c0f9e2d0/attachment.html>
More information about the Plasma-devel
mailing list