mirror of https://github.com/mpv-player/mpv
e32554cd57
The core wayland protocol way of handling scaling is to use the buffer_scale mechanism. But this sucks in several ways for reasons I won't list here and fractional scaling rightly avoids this altogether and uses a buffer_scale of 1 (i.e. not setting it) along with viewporter. When originally implemented, this was only specifically used when the fractional scale protocol was available, but we actually can use it as a full replacement instead. This means that mpv now hard requires viewporter, but this protocol is supported by everyone and is one of the few that is actually stable. How it works is the same regardless of fractional scaling or not. When the compositor has a scale value not equal to 1, it will always scale the client by that factor (unless you set buffer_scale). What we do here is pass a viewporter size that exactly undos the compositor-side scale (sans a possible rounding error). So what we are left with is just the exactly physical pixels we want to display. Fixes #13316. |
||
---|---|---|
.. | ||
common.h | ||
context.c | ||
context.h | ||
context_android.c | ||
context_display.c | ||
context_mac.m | ||
context_wayland.c | ||
context_win.c | ||
context_xlib.c | ||
utils.c | ||
utils.h |