Erik Kurzinger
ccf200ac97
xwayland: add detection for drivers that don't support implicit sync
...
Signed-off-by: Erik Kurzinger <ekurzinger@nvidia.com >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/967 >
(cherry picked from commit 89c327f263 )
2026-01-19 12:32:24 -08:00
Enrico Weigelt, metux IT consult
c7f40a8074
xkb: drop unused defines
...
These aren't used anywhere, neither in Xserver nor drivers,
for about 11 years now. Fallout of removing component listing support.
Fixes: 710065da37
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1458 >
(cherry picked from commit c5e88238f2 )
2026-01-19 12:32:24 -08:00
Willem Jan Palenstijn
4348934f2e
mi: fix rounding issues around zero in miPointerSetPosition
...
Fixes: https://gitlab.freedesktop.org/xorg/xserver/-/issues/577
This patch replaces the instances of trunc in miPointerSetPosition by
floor, thereby removing the incorrect behaviour with subpixel pointer
locations between -1 and 0.
This is the relevant code fragment:
/* In the event we actually change screen or we get confined, we just
* drop the float component on the floor
* FIXME: only drop remainder for ConstrainCursorHarder, not for screen
* crossings */
if (x != trunc(*screenx))
*screenx = x;
if (y != trunc(*screeny))
*screeny = y;
The behaviour of this code does not match its comment for subpixel
coordinates between -1 and 0. For example, if *screenx is -0.5, the
preceding code would (correctly) clamp x to 0, but this would not be
detected by this condition, since 0 == trunc(-0.5), leaving *screenx
at -0.5, out of bounds.
This causes undesirable behaviour in GTK3 code using xi2, where negative
subpixel coordinates like this would (to all appearances randomly)
remove the focus from windows aligned with the zero boundary when the
mouse hits the left or top screen boundaries.
The other occurences of trunc in miPointerSetPosition have a more subtle
effect which would prevent proper clamping if there is a pointer limit
at a negative integer rather than at 0. This patch changes these to
floor for consistency.
Signed-off-by: Willem Jan Palenstijn <wjp@usecode.org >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1451 >
(cherry picked from commit 0ee4ed286e )
2026-01-19 12:32:24 -08:00
Enrico Weigelt, metux IT consult
d81bc72255
xkb: make XkbUpdateKeyTypesFromCore() static
...
This function is only used inside the same .c file where it's defined,
no outside users, also not in drivers. Thus no need to keep it exported.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1468 >
(cherry picked from commit 95faea8880 )
2026-01-19 12:32:24 -08:00
Peter Hutterer
80437e2054
render: fix refcounting of glyphs during ProcRenderAddGlyphs
...
Previously, AllocateGlyph would return a new glyph with refcount=0 and a
re-used glyph would end up not changing the refcount at all. The
resulting glyph_new array would thus have multiple entries pointing to
the same non-refcounted glyphs.
AddGlyph may free a glyph, resulting in a UAF when the same glyph
pointer is then later used.
Fix this by returning a refcount of 1 for a new glyph and always
incrementing the refcount for a re-used glyph, followed by dropping that
refcount back down again when we're done with it.
CVE-2024-31083, ZDI-CAN-22880
This vulnerability was discovered by:
Jan-Niklas Sohn working with Trend Micro Zero Day Initiative
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1463 >
(cherry picked from commit bdca6c3d1f )
2026-01-19 12:32:24 -08:00
Alan Coopersmith
ef605f4c14
Xquartz: ProcAppleDRICreatePixmap needs to use unswapped length to send reply
...
CVE-2024-31082
Fixes: 14205ade0 ("XQuartz: appledri: Fix byte swapping in replies")
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1463 >
(cherry picked from commit 6c684d035c )
2026-01-19 12:32:24 -08:00
Alan Coopersmith
c94025ae4c
Xi: ProcXIPassiveGrabDevice needs to use unswapped length to send reply
...
CVE-2024-31081
Fixes: d220d6907 ("Xi: add GrabButton and GrabKeysym code.")
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1463 >
(cherry picked from commit 3e77295f88 )
2026-01-19 12:32:24 -08:00
Alan Coopersmith
dbf2e2a145
Xi: ProcXIGetSelectedEvents needs to use unswapped length to send reply
...
CVE-2024-31080
Reported-by: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=69762
Fixes: 53e821ab4 ("Xi: add request processing for XIGetSelectedEvents.")
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1463 >
(cherry picked from commit 96798fc196 )
2026-01-19 12:32:24 -08:00
Enrico Weigelt, metux IT consult
5977b33fc4
config: fix wscons backend on NetBSD
...
Compiler gives warning:
../config/wscons.c: At top level:
../config/wscons.c:262:1: warning: no previous prototype for ‘config_wscons_init’ [-Wmissing-prototypes]
262 | config_wscons_init(void)
| ^~~~~~~~~~~~~~~~~~
../config/wscons.c:270:1: warning: no previous prototype for ‘config_wscons_fini’ [-Wmissing-prototypes]
270 | config_wscons_fini(void)
| ^~~~~~~~~~~~~~~~~~
Problem is: commit bcee84c3e4 wanted to enable
wscons support on NetBSD, but only added compiling config/wscons.c, but didn't
enable setting the CONFIG_WSCONS symbol, so it won't be called at all.
Fixes: bcee84c3e4
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1450 >
(cherry picked from commit 272e2915fe )
2026-01-19 12:32:24 -08:00
Enrico Weigelt, metux IT consult
9b718dae8c
test: fix FTBS on missing xlib includes on NetBSD
...
When X11 isn't installed directly at /usr hierarchy (eg. NetBSD uses
/usr/X11R7/), build breaks:
../test/list.c:31:10: fatal error: X11/Xlib.h: No such file or directory
31 | #include <X11/Xlib.h>
| ^~~~~~~~~~~~
Needs explicitly dependency on libX11, so the include path is added.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1442 >
(cherry picked from commit e3d391b9c6 )
2026-01-19 12:32:24 -08:00
Enrico Weigelt, metux IT consult
322d59814d
xfree86: modesetting: fix warning on unused variable
...
Fix warning:
../hw/xfree86/drivers/modesetting/driver.c:1612:19: warning: unused variable ‘pEnt’ [-Wunused-variable]
1612 | EntityInfoPtr pEnt = ms->pEnt;
| ^~~~
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1443 >
(cherry picked from commit 0663bb119a )
2026-01-19 12:32:24 -08:00
Enrico Weigelt, metux IT consult
db4b689e1b
config: wscons: fix warning on discarded const
...
Fix warning:
../config/wscons.c:47:11: warning: initialization discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
47 | { KB_UK, "gb" }, \
| ^~~~
../config/wscons.c:58:5: note: in expansion of macro ‘KB_OVRENC’
58 | KB_OVRENC,
| ^~~~~~~~~
../config/wscons.c:48:11: warning: initialization discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
48 | { KB_SV, "se" }, \
| ^~~~
[...]
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1444 >
(cherry picked from commit bcf55bded7 )
2026-01-19 12:32:24 -08:00
Enrico Weigelt, metux IT consult
7ef6f83d9b
test: fix deprecated meson calls
...
Fix meson warning:
> WARNING: Project targeting '>= 0.56.0' but tried to use feature deprecated since '0.55.0': ExternalProgram.path. use ExternalProgram.full_path() instead
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1448 >
(cherry picked from commit c187c54086 )
2026-01-19 12:32:24 -08:00
Enrico Weigelt, metux IT consult
63f7b94597
config: wscons: use asprintf() instead of deprecated Xprintf()
...
The Xprintf() function is deprecated. Most of it's call sites had been moved
to asprintf(), so also do it for the remaining two ones.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1449 >
(cherry picked from commit 2d4fa74000 )
2026-01-19 12:32:24 -08:00
Enrico Weigelt, metux IT consult
598bbe6e51
include: unpexport SELINUX_* consts from include/global.h
...
globals.h shouldn't be cluttered with extension specific things, that
aren't even used by external modules/drivers.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1328 >
(cherry picked from commit a57b449485 )
2026-01-19 12:32:24 -08:00
Enrico Weigelt, metux IT consult
a6339b6381
os: move SELinux enforcement state to the extension
...
Those fields are better off in the extension instead of the OS layer.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1328 >
(cherry picked from commit 537293ff4e )
2026-01-19 12:32:24 -08:00
Alan Coopersmith
953814c816
xorg.conf.man: Add missing new paragraph mark before AllowByteSwappedClients
...
Was previously being shown as part of previous entry.
Fixes: 412777664 ("Disallow byte-swapped clients by default")
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1439 >
(cherry picked from commit bb2e2eba42 )
2026-01-19 12:32:23 -08:00
Alan Coopersmith
bd2de77811
Xserver.man: Note that -byteswappedclients is the default in this release
...
Fixes: 412777664 ("Disallow byte-swapped clients by default")
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1439 >
(cherry picked from commit 3385449c72 )
2026-01-19 12:32:23 -08:00
Alan Coopersmith
e2bffc5561
Xext: SProcSyncCreateFence needs to swap drawable id too
...
Otherwise it causes the server to return BadDrawable giving a
byte-swapped resource id instead of the real id the client sent.
Reported-by: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=69762
Fixes: 397dfd9f8 ("Create/Destroy/Trigger/Reset/Query Fence Sync objs")
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1437 >
(cherry picked from commit e6573baa7d )
2026-01-19 12:32:23 -08:00
Enrico Weigelt, metux IT consult
e4a5482c10
test: xi2: drop unused variable
...
fix warning:
> ../test/xi2/protocol-eventconvert.c:276:9: warning: variable 'buttons' set but not used [-Wunused-but-set-variable]
> int buttons, valuators;
> ^
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1429 >
(cherry picked from commit 4e53612347 )
2026-01-19 12:32:23 -08:00
Enrico Weigelt, metux IT consult
88e0c1de76
test: simple-xinit: add _X_NORETURN
...
fix warning:
> ../test/simple-xinit.c:58:1: warning: function 'usage' could be declared with attribute 'noreturn' [-Wmissing-noreturn]
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1429 >
(cherry picked from commit f7a97a7ab0 )
2026-01-19 12:32:23 -08:00
Enrico Weigelt, metux IT consult
3abc4a5581
meson.build: move manpage specific stuff to man/ subdir
...
Tidy up the huge file a little bit.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1433 >
(cherry picked from commit 58117a0c3e )
2026-01-19 12:32:23 -08:00
Enrico Weigelt, metux IT consult
a0554ea4a9
os: rpc: fix type mismatch
...
fix warning:
> ../os/rpcauth.c:159:16: warning: result of comparison of constant -1 with expression of type 'XID' (aka 'unsigned int') is always false [-Wtautological-constant-out-of-range-compare]
> if (rpc_id == ~0L)
> ~~~~~~ ^ ~~~
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1431 >
(cherry picked from commit 8dc82a13a9 )
2026-01-19 12:32:23 -08:00
Enrico Weigelt, metux IT consult
f31a3917ac
xfree86: int10: fix missing include of <errno.h>
...
It's much cleaner to always include directly what one needs,
instead of relying on very indirect including.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1435 >
(cherry picked from commit f361931035 )
2026-01-19 12:32:23 -08:00
Enrico Weigelt, metux IT consult
a25c64ae3c
xfree86: modesettig: fix missing include of <errno.h>
...
It's much cleaner to always include directly what one needs,
instead of relying on very indirect including.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1435 >
(cherry picked from commit cd84b3eaf3 )
2026-01-19 12:32:23 -08:00
Enrico Weigelt, metux IT consult
d80997efdb
xfree86: os-support: fix missing include of <errno.h>
...
It's much cleaner to always include directly what one needs,
instead of relying on very indirect including.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1435 >
(cherry picked from commit 9fc6e0d304 )
2026-01-19 12:32:23 -08:00
Enrico Weigelt, metux IT consult
f99ec42efc
xfree86: common: fix missing include of <errno.h>
...
It's much cleaner to always include directly what one needs,
instead of relying on very indirect including.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1435 >
(cherry picked from commit d91098ef48 )
2026-01-19 12:32:23 -08:00
Enrico Weigelt, metux IT consult
94f2affef2
xwayland: fix missing include of <errno.h>
...
It's much cleaner to always include directly what one needs,
instead of relying on very indirect including.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1435 >
(cherry picked from commit b2fd743288 )
2026-01-19 12:32:23 -08:00
Enrico Weigelt, metux IT consult
90c7f8dc93
xquartz: fix missing include of <errno.h>
...
It's much cleaner to always include directly what one needs,
instead of relying on very indirect including.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1435 >
(cherry picked from commit 94e5252365 )
2026-01-19 12:32:23 -08:00
Enrico Weigelt, metux IT consult
6d93688b5e
os: fix missing include of <errno.h>
...
It's much cleaner to always include directly what one needs,
instead of relying on very indirect including.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1435 >
(cherry picked from commit dfa606d5a4 )
2026-01-19 12:32:23 -08:00
Enrico Weigelt, metux IT consult
51a90a64e5
Xext: fix missing include of <errno.h>
...
It's much cleaner to always include directly what one needs,
instead of relying on very indirect including.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1435 >
(cherry picked from commit d66acae501 )
2026-01-19 12:32:23 -08:00
Olivier Fourdan
2e2ad4cb89
xwayland: Use fractional scale with rootful
...
Implement fractional scale with Xwayland rootful by scaling the content
to the desired fractional scale using a viewport.
For now this applies to Xwayland rootful only.
Signed-off-by: Olivier Fourdan <ofourdan@redhat.com >
Reviewed-By: Kenny Levinsen <kl@kl.wtf >
Acked-by: Peter Hutterer <peter.hutterer@who-t.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1197 >
(cherry picked from commit 821d3d5789 )
2026-01-19 12:32:23 -08:00
Olivier Fourdan
7e4862c596
xwayland: Add helper function for fractional scaling
...
Fractional scaling may not be available, or not suitable for the current
configuration (e.g. if running rootless).
Add a helper function to tell whether fractional scaling should be used.
Signed-off-by: Olivier Fourdan <ofourdan@redhat.com >
Reviewed-By: Kenny Levinsen <kl@kl.wtf >
Acked-by: Peter Hutterer <peter.hutterer@who-t.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1197 >
(cherry picked from commit 3e77c1699a )
2026-01-19 12:32:23 -08:00
Olivier Fourdan
a2491a5d08
xwayland: Add support for fractional scale protocol
...
Add support for wp_fractional_scale_v1 protocol.
Signed-off-by: Olivier Fourdan <ofourdan@redhat.com >
Reviewed-By: Kenny Levinsen <kl@kl.wtf >
Acked-by: Peter Hutterer <peter.hutterer@who-t.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1197 >
(cherry picked from commit 7a78756d0a )
2026-01-19 12:32:23 -08:00
Olivier Fourdan
c94684a884
build: Bump wayland-protocols requirement to 1.31
...
This is needed to support the "wp-fractional-scale-v1" protocol.
Signed-off-by: Olivier Fourdan <ofourdan@redhat.com >
Reviewed-By: Kenny Levinsen <kl@kl.wtf >
Acked-by: Peter Hutterer <peter.hutterer@who-t.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1197 >
(cherry picked from commit 98692300f5 )
2026-01-19 12:32:23 -08:00
Olivier Fourdan
65cf3cf05a
xwayland: Rename xwl_window_enable_viewport()
...
To support the fractional scale protocol, we need a viewport.
Rename the existing function xwl_window_enable_viewport() to avoid
confusion with the viewport we use for fullscreen XRandR emulation in
rootless mode.
No functional change.
Signed-off-by: Olivier Fourdan <ofourdan@redhat.com >
Reviewed-By: Kenny Levinsen <kl@kl.wtf >
Acked-by: Peter Hutterer <peter.hutterer@who-t.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1197 >
(cherry picked from commit da84b470cb )
2026-01-19 12:32:23 -08:00
Olivier Fourdan
9b349d6a8d
xwayland: Update the global screen scale
...
Recompute and update the global screen scale based on the different
outputs the root window is placed on.
For backward compatibility, this functionality is however disabled by
default and can be enabled using a new command line option "-hidpi".
That option has no effect if Xwayland is running rootless.
Signed-off-by: Olivier Fourdan <ofourdan@redhat.com >
Reviewed-By: Kenny Levinsen <kl@kl.wtf >
Acked-by: Peter Hutterer <peter.hutterer@who-t.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1197 >
(cherry picked from commit 4003b1f9a2 )
2026-01-19 12:32:23 -08:00
Olivier Fourdan
1f5a10c4b4
xwayland: Update the scale based on enter/leave events
...
Recompute the window scale each time the window enters or leaves an
output.
Signed-off-by: Olivier Fourdan <ofourdan@redhat.com >
Reviewed-By: Kenny Levinsen <kl@kl.wtf >
Acked-by: Peter Hutterer <peter.hutterer@who-t.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1197 >
(cherry picked from commit 290ae87c02 )
2026-01-19 12:32:23 -08:00
Olivier Fourdan
616a07c605
xwayland: Keep track of outputs per window
...
Add a list of outputs a window is placed on, adding an output whenever
the surface enters the output and removing it once it leaves the output.
Note that not all Wayland compositors actually send a leave surface
event on output removal, so we need to make sure to remove the output
from the list for each window, otherwise we might end up pointing to
freed memory.
Signed-off-by: Olivier Fourdan <ofourdan@redhat.com >
Reviewed-By: Kenny Levinsen <kl@kl.wtf >
Acked-by: Peter Hutterer <peter.hutterer@who-t.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1197 >
(cherry picked from commit 4248bfb0da )
2026-01-19 12:32:23 -08:00
Olivier Fourdan
97da4cc7b1
xwayland: Make has_viewport_enabled private
...
By using a sensible scale factor for input even when there is no
viewport enabled, no need to have xwl_window_has_viewport_enabled()
public anymore.
Small cleanup, no functional change.
Signed-off-by: Olivier Fourdan <ofourdan@redhat.com >
Reviewed-By: Kenny Levinsen <kl@kl.wtf >
Acked-by: Peter Hutterer <peter.hutterer@who-t.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1197 >
(cherry picked from commit cd0c43df13 )
2026-01-19 12:32:23 -08:00
Olivier Fourdan
49a269e24e
xwayland: Apply the viewport's scale_x/y to all input
...
The viewport's scale_x/y is currently applied to the motion event only.
Apply the same viewport_scale_x/y to all relevant input coordinates.
Signed-off-by: Olivier Fourdan <ofourdan@redhat.com >
Reviewed-By: Kenny Levinsen <kl@kl.wtf >
Acked-by: Peter Hutterer <peter.hutterer@who-t.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1197 >
(cherry picked from commit d7f31fe887 )
2026-01-19 12:32:23 -08:00
Olivier Fourdan
4668205479
xwayland: Always set the viewport scale factor
...
When the viewport is disabled, set the scale x/y back to 1.0 so that we
can apply the scale factor regardless of the viewport being enabled.
Signed-off-by: Olivier Fourdan <ofourdan@redhat.com >
Reviewed-By: Kenny Levinsen <kl@kl.wtf >
Acked-by: Peter Hutterer <peter.hutterer@who-t.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1197 >
(cherry picked from commit 3ea36e5214 )
2026-01-19 12:32:23 -08:00
Olivier Fourdan
5683cc48be
xwayland: Rename scale_x/y to viewport_scale_x/y
...
The scale_x/y factor applies when a viewport is in use, rename the
fields to reflect that and distinguish these from the other scale
factors such as the core protocol surface scale and the fractional
scaling.
Signed-off-by: Olivier Fourdan <ofourdan@redhat.com >
Reviewed-By: Kenny Levinsen <kl@kl.wtf >
Acked-by: Peter Hutterer <peter.hutterer@who-t.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1197 >
(cherry picked from commit 96fd7cc8c9 )
2026-01-19 12:32:23 -08:00
Olivier Fourdan
5026378ddb
xwayland: Account for the scale factor
...
Apply the scale factor to the root window and adjust the coordinates and
hotspot location for cursors.
Signed-off-by: Olivier Fourdan <ofourdan@redhat.com >
Reviewed-By: Kenny Levinsen <kl@kl.wtf >
Acked-by: Peter Hutterer <peter.hutterer@who-t.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1197 >
(cherry picked from commit 54f8fc4090 )
2026-01-19 12:32:22 -08:00
Olivier Fourdan
ddaef8a4e8
xwayland: Add scale factor to the Xwayland screen
...
For now, the global surface scale is always 1, no functional change.
Signed-off-by: Olivier Fourdan <ofourdan@redhat.com >
Reviewed-By: Kenny Levinsen <kl@kl.wtf >
Acked-by: Peter Hutterer <peter.hutterer@who-t.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1197 >
(cherry picked from commit b678297c53 )
2026-01-19 12:32:22 -08:00
Olivier Fourdan
9e835ca059
xwayland: Track output scales
...
Keep track of the output scales as advertised by the wl_output protocol.
Signed-off-by: Olivier Fourdan <ofourdan@redhat.com >
Reviewed-By: Kenny Levinsen <kl@kl.wtf >
Acked-by: Peter Hutterer <peter.hutterer@who-t.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1197 >
(cherry picked from commit 2bdf594cea )
2026-01-19 12:32:22 -08:00
Olivier Fourdan
824fb17891
xwayland: Use CRTC transforms
...
Advertise the scaling factor applied to the Xwayland output using the
mechanism of CRTC transforms.
That allows for X11 clients to query the scale factor using XRandR.
Signed-off-by: Olivier Fourdan <ofourdan@redhat.com >
Reviewed-By: Kenny Levinsen <kl@kl.wtf >
Acked-by: Peter Hutterer <peter.hutterer@who-t.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1197 >
(cherry picked from commit 5b05a29912 )
2026-01-19 12:32:22 -08:00
Olivier Fourdan
29301f0bad
xwayland: Introduce output scale
...
Add a scale factor to the Xwayland output and take the scale into
account when computing the screen size.
Signed-off-by: Olivier Fourdan <ofourdan@redhat.com >
Reviewed-By: Kenny Levinsen <kl@kl.wtf >
Acked-by: Peter Hutterer <peter.hutterer@who-t.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1197 >
(cherry picked from commit 6a09cd2d20 )
2026-01-19 12:32:22 -08:00
Olivier Fourdan
39d50108d4
xwayland: Store the mode width/height
...
The mode size can be different from the actual output size when a
transformation is at play.
Store the actual mode width/height as well in preparation for adding
support for transforms.
No functional change.
Signed-off-by: Olivier Fourdan <ofourdan@redhat.com >
Reviewed-By: Kenny Levinsen <kl@kl.wtf >
Acked-by: Peter Hutterer <peter.hutterer@who-t.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1197 >
(cherry picked from commit 8c54f90673 )
2026-01-19 12:32:22 -08:00
Olivier Fourdan
5a76ac2611
xwayland: Use double for screen size
...
Use double precision floating point for the screen size to reduce the
rounding issues when using fractional scaling.
Introduce a couple of simple convenient functions that round the
floating point value into an integer and use it in place of directly
accessing the xwl_screen width/height for integer computation.
This is preparation work for the introduction of fractional scaling,
there should be no functional change at this point.
Signed-off-by: Olivier Fourdan <ofourdan@redhat.com >
Reviewed-By: Kenny Levinsen <kl@kl.wtf >
Acked-by: Peter Hutterer <peter.hutterer@who-t.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1197 >
(cherry picked from commit 32dad24083 )
2026-01-19 12:32:22 -08:00