Commit Graph

21673 Commits

Author SHA1 Message Date
stefan11111
fd3af5fc7a Xext: Fix type mismatch in xvdisp.c
Fixes: https://github.com/X11Libre/xserver/issues/706

Signed-off-by: stefan11111 <stefan11111@shitposting.expert>
2025-09-15 11:23:48 +02:00
Enrico Weigelt, metux IT consult
eb9a9e0708 xkb: ProcXkbGetKbdByName(): rename child buffers to childbuf
rename them to indicate that they're not the global payload buffer,
but temporary childs for sub-replies.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-09-15 11:20:36 +02:00
stefan11111
d09b3dae3e hw/xfree86/common: remove {fb,platform,pci,sbus}SlotClaimed
These were global variables that were tracking how many
slots of one kind were claimed by drivers,
or if slots of one kind were claimed by drivers.

There were used inconsistently, sometimes they were `int`'s,
sometimes they were `Bool`'s.

All they were doing was to kill the server in various circumstances,
that were often incorrect and lead to bug reports, and guard against
a very speciffic kind of driver code error in `xf86ClaimFbSlot`,
that was also prone to false-positives.

Now that both these uses were removed,
these globals are no longer used, so we can remove them.

Signed-off-by: stefan11111 <stefan11111@shitposting.expert>
2025-09-15 11:19:20 +02:00
stefan11111
d3fd8c385b hw/xfree86/common: remove broken checks from xf86ClaimFbSlot
The intent of both these checks, I assume,
is that drivers don't claim 2 slots at once (fb, pci, plarform).
If we actually want to implement checking like this,
we would have to put a {fb,pci,platform}SlotClaimed in each driver struct.
We could definitely do that, but it seems weird
to single out this error to protect against.
By design, drivers are able to execute arbitrary code.
Nothing is stopping them from doing `*(volatile char*)0=0;`
in preinit or in one of the probes.

If we do decide to keep these checks, we have to be careful of corner cases.
What happens if a driver is used with multiple cards, one pci one not?
We could also keep track of how many slots a driver claims,
and reject any further claims after the count reaches 1.
We would still have to make that counter per driver and per card.

Signed-off-by: stefan11111 <stefan11111@shitposting.expert>
2025-09-15 11:19:20 +02:00
stefan11111
22d963bc4d hw/xfree86/common: remove xf86PostProbe
A long time ago, this function used to initialize
various screen resources.
Now, this function just kills the X server in various circumstances
for no good reason.

Fixes: fc78bcca21
Fixes: 728b54528d
Fixes: https://gitlab.freedesktop.org/xorg/driver/xf86-video-fbdev/-/issues/9
Signed-off-by: stefan11111 <stefan11111@shitposting.expert>
2025-09-15 11:19:20 +02:00
Enrico Weigelt, metux IT consult
f8973ffc2e .github: use our own mirrors of build dependencies
f.d.o is failing too often in recent times, so switching to our
own mirrors at github.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-09-15 11:13:22 +02:00
sesankm
71d0f66365 xkb: XKBMisc: use C99 declarations in XkbApplyCompatMapToKey
Signed-off-by: sesankm <26676400+sesankm@users.noreply.github.com>
2025-09-15 10:47:40 +02:00
b-aaz
52a357dbf3 xfree86: os-support: Deal with DFBSD correctly.
In DragonFlyBSD the host_machine.system() variable is set to 'dragonfly' and does not end with 'bsd'. Changed a check to correctly detect 'dragonfly' as a member of BSD OSs.

bsd/bsd_kmod.c is used for dealing with kernel modules on FreeBSD, enabled this file for DragonFlyBSD too, because they both have the same APIs in this context.

Signed-off-by: b-aaz <b-aazbsd@proton.me>
2025-09-15 10:27:07 +02:00
stefan11111
77b396d09b include: update comment about exported noPanoramiXExtension
Signed-off-by: stefan11111 <stefan11111@shitposting.expert>
2025-09-15 10:26:11 +02:00
stefan11111
b11c28b13e modesetting: handle pitch when painting the hardware cursor
The cursor pitch can depend on crtc.

Since we only use the sizes reported by SIZE_HINTS,
we can allocate a small cache for pitches in each crtc.

Signed-off-by: stefan11111 <stefan11111@shitposting.expert>
2025-09-15 09:06:52 +02:00
Enrico Weigelt, metux IT consult
56c4d68140 treewide: drop ScreenInfoPtr parameter from InitOutput()
Nobody's using this pointer anymore, everybody's using the global
screenInfo structure.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-09-12 19:49:23 +02:00
sesankm
16d6182e15 glx: glxcmds: use rpcbuf for payload in __glXDisp_QueryExtensionsString
Signed-off-by: sesankm <26676400+sesankm@users.noreply.github.com>
2025-09-12 19:36:21 +02:00
sesankm
5a0b736952 dix: rpcbuf: exporting x_rpcbuf_write_string_0t_pad for glx
Signed-off-by: sesankm <26676400+sesankm@users.noreply.github.com>
2025-09-12 19:36:21 +02:00
Enrico Weigelt, metux IT consult
d1bec2b2c0 dbe: inline SProc*()'s
No need to have a hole bunch of extra functions, if we can just easily
inline the few relevant lines.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-09-12 19:33:57 +02:00
Enrico Weigelt, metux IT consult
a1522644ff Xext: vidmode: inline SProc*()'s
No need to have a hole bunch of extra functions, if we can just easily
inline the few relevant lines.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-09-12 15:37:25 +02:00
Enrico Weigelt, metux IT consult
4f65d06116 os: replace GenerateRandomData() by custom arc4random_buf() on platforms that missing it
arc4random_buf() is a pretty standard libc function on Unix'oid platforms,
but not all our targets have it, thus we need a fallback there. Currently we
have GenerateRandomData(), which either just wraps arc4random_buf() or provides
some fallback implementation.

For those cases it's easier to just implement missing functions directly
instead of having custom wrapper functions. So, drop GenerateRandomData()
in favor of arc4random_buf() and provide fallback implementation for where
it is missing.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-09-12 15:37:13 +02:00
Enrico Weigelt, metux IT consult
f503962970 render: consolidate duplicate Proc* functions
dropping lots of duplicate functions which are doing the same like others.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-09-12 15:30:07 +02:00
Enrico Weigelt, metux IT consult
358f76f2ad treewide: fix misleading firstScreen variable naming to masterScreen
Follow-up on renaming dixGetFirstScreenPtr() to dixGetMasterScreen():
also rename the target variables for correct technical terminology.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-09-12 11:44:05 +02:00
Enrico Weigelt, metux IT consult
b0ffa7b286 treewide: rename dixGetFirstScreenPtr() to dixGetMasterScreen() for correct semantics
In Xinerama/Panoramix configuration there's one screen that's having special
meaning - it's used for simulating as the frontend for all client operations:
the clients (should) only talk to that screen, while panoramix subsystem is
proxying those operations to all the other screens (with certain changed
applied, eg. coordinate transformations).

Historically, this screen happens to be the first one in the system (some of
it's proc's are hooked up in order to achieve desired behaviour). That's why it
used to be accessed via screenInfo.screens[0] - that already had been encapsulated
into a tiny helper `dixGetFirstScreen()`.

a) the correct terminus technicus for a situation where one device (or SW entity)
   entirely controlling others is a master-slave-relationship: the controlling
   device/entity is `master`, the controlled ones are `slave` (to that specific
   master).

b) the term "first screen" is inacurate and misleading here: what the caller's are
   actually interest in isn't the first entry in the screen array, but the screen
   that's controlling the others. With upcoming refactoring of the Xinerama/Panoramix
   subsystem, this might well be a different array index than 0.

c) the term `default` also wouldn't match: `default` implies there's a real practical
   choice, and such value applies when no explicit choice has been made. But in this
   case, it practically doesn't make sense (except perhaps for debugging purpose)
   for a client to use any different screen.

Therefore fixing the function name to the correct technical terminology.
(for sake of patch readability, renaming corresponding variables is left to
subsequent patches).

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-09-12 11:44:05 +02:00
Enrico Weigelt, metux IT consult
f419bd3ac3 Xext: xtest: inline SProc*()'s
No need to have a hole bunch of extra functions, if we can just easily
inline the few relevant lines.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-09-12 10:01:37 +02:00
Enrico Weigelt, metux IT consult
9705a5d7af xf86bigfont: security: inline SProc*()'s
No need to have a hole bunch of extra functions, if we can just easily
inline the few relevant lines.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-09-12 10:01:24 +02:00
Enrico Weigelt, metux IT consult
6627ca7a6e Xext: damage: inline SProc*()'s
No need to have a hole bunch of extra functions, if we can just easily
inline the few relevant lines.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-09-12 10:01:11 +02:00
Enrico Weigelt, metux IT consult
79841c8293 dix: XineramaSetCursorPosition() declare and initialize variable in one shot
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-09-12 09:51:50 +02:00
Enrico Weigelt, metux IT consult
a6854775b5 composite: ProcCompositeGetOverlayWindow(): declare cs when needed
it's cleaner to declare variables where they're assigned first.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-09-12 09:51:34 +02:00
Enrico Weigelt, metux IT consult
e16c608d73 xfree86: dri2: ProcDRI2Connect(): use x_rpcbuf_t
Use x_rpcbuf_t for reply payload assembly.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-09-12 09:51:23 +02:00
Enrico Weigelt, metux IT consult
dd20d5c0d1 xquartz: appledri: use x_rpcbuf_t
Use x_rpcbuf_t for reply payload assembly.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-09-12 09:50:51 +02:00
Enrico Weigelt, metux IT consult
6148bee17d xfree86: dga: ProcXDGASetMode(): use x_rpcbuf_t
Use x_rpcbuf_t for payload assembly and X_SEND_REPLY_WITH_RPCBUF()
for sending it all out.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-09-12 09:40:04 +02:00
Enrico Weigelt, metux IT consult
24d15f9b7b render: consolidate byte-swapping in ProcRenderQueryVersion()
No need for extra functions and call tables for the few trivial lines.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-09-12 09:39:53 +02:00
Enrico Weigelt, metux IT consult
2b875e18bc Xi: consolidate request handler prototypes
Instead of having huge number of micro-headers, consolidate all the
request handler prototypes in one file.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-09-12 09:25:29 +02:00
Enrico Weigelt, metux IT consult
31b110cf28 xfree86: dri: ProcXF86DRIGetDeviceInfo() use x_rpcbuf_t
Use x_rpcbuf_t for reply payload assembly and X_SEND_REPLY_WITH_RPCBUF()
for sending it all out.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-09-11 16:18:58 +02:00
Enrico Weigelt, metux IT consult
74f93c4022 xfree86: common: move out private definitions from xf86platformBus.h
Private definitions should not pollute public / SDK headers.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-09-11 16:15:14 +02:00
Enrico Weigelt, metux IT consult
850aebf5bc xwin: use screenInfo insead of pointer passed to InitOutput()
We only have one global screenInfo struct ever, and many other parts of the
Xserver can only operate on global screenInfo, so it's time to phase out
this extra pointer. Once the same has done on the other DDXes, it will
be dropped from InitOutput()'s parameter list.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-09-11 11:50:02 +02:00
Enrico Weigelt, metux IT consult
c49bcbdcc6 xfree86: dri: ProcXF86DRIGetClientDriverName() fix uninitialized variable
The clientDriverName variable might be left uninitialized when
DRIGetClientDriverName() fails.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-09-11 11:40:28 +02:00
Alan Coopersmith
db07dbf914 modesetting: fix modesetting symbol test when glx is disabled
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2056>
2025-09-11 11:32:07 +02:00
Alan Coopersmith
b641d8e33e modesetting: Fix builds with pciaccess or udev_kms disabled
CI meson-disable-options builds were failing with:
```
../hw/xfree86/drivers/modesetting/driver.c:127:5: error: ‘ms_device_match’
 undeclared here (not in a function)
  127 |     ms_device_match,
      |     ^~~~~~~~~~~~~~~
../hw/xfree86/drivers/modesetting/driver.c: In function ‘ms_get_drm_master_fd’:
../hw/xfree86/drivers/modesetting/driver.c:1179:19: error: variable ‘pEnt’
 set but not used [-Werror=unused-but-set-variable]
 1179 |     EntityInfoPtr pEnt;
      |                   ^~~~
../hw/xfree86/drivers/modesetting/driver.c: At top level:
../hw/xfree86/drivers/modesetting/driver.c:84:13: error: ‘ms_pci_probe’
 used but never defined [-Werror]
   84 | static Bool ms_pci_probe(DriverPtr driver,
      |             ^~~~~~~~~~~~
../hw/xfree86/drivers/modesetting/driver.c:313:1: error: ‘probe_hw_pci’
 defined but not used [-Werror=unused-function]
  313 | probe_hw_pci(const char *dev, struct pci_device *pdev)
      | ^~~~~~~~~~~~
```
Fixes: a72bdf17 ("modesetting: rewrite probing based on fbdev.")
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2056>
2025-09-11 11:32:07 +02:00
callmetango
d8b7a3e46c xfree86: loader: search module dirs only once
Only specify the top module directories since the loader is recursing
into the subdirectories either way.

Fixes: #991
Signed-off-by: callmetango <callmetango@users.noreply.github.com>
2025-09-11 11:29:39 +02:00
Enrico Weigelt, metux IT consult
2404643489 xnest: use screenInfo insead of pointer passed to InitOutput()
We only have one global screenInfo struct ever, and many other parts of the
Xserver can only operate on global screenInfo, so it's time to phase out
this extra pointer. Once the same has done on the other DDXes, it will
be dropped from InitOutput()'s parameter list.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-09-11 11:23:48 +02:00
Enrico Weigelt, metux IT consult
4131dd2950 vfb: use screenInfo insead of pointer passed to InitOutput()
We only have one global screenInfo struct ever, and many other parts of the
Xserver can only operate on global screenInfo, so it's time to phase out
this extra pointer. Once the same has done on the other DDXes, it will
be dropped from InitOutput()'s parameter list.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-09-11 11:23:34 +02:00
Enrico Weigelt, metux IT consult
07820e4a7d xfree86: dri: ProcXF86DRIOpenConnection() use x_rpcbuf_t
Use x_rpcbuf_t for reply payload assembly and X_SEND_REPLY_WITH_RPCBUF()
for sending it all out.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-09-11 11:23:15 +02:00
Enrico Weigelt, metux IT consult
e2e8e78cd2 xfree86: use screenInfo insead of pointer passed to InitOutput()
We only have one global screenInfo struct ever, and many other parts of the
Xserver can only operate on global screenInfo, so it's time to phase out
this extra pointer. Once the same has done on the other DDXes, it will
be dropped from InitOutput()'s parameter list.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-09-11 11:14:19 +02:00
Enrico Weigelt, metux IT consult
c3b443b3b6 xquartz: use screenInfo insead of pointer passed to InitOutput()
We only have one global screenInfo struct ever, and many other parts of the
Xserver can only operate on global screenInfo, so it's time to phase out
this extra pointer. Once the same has done on the other DDXes, it will
be dropped from InitOutput()'s parameter list.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-09-11 11:14:07 +02:00
Enrico Weigelt, metux IT consult
7fb1989cec xquartz: replace malloc() by calloc()
It's in general safer to clear out all the memory on allocation,
in order to prevent potential leaks or undefined behaviour on
uninitialized data.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-09-11 11:13:44 +02:00
Enrico Weigelt, metux IT consult
2cb5aac7a3 xfree86: dri: ProcXF86DRIGetClientDriverName() use x_rpcbuf_t
Use x_rpcbuf_t for reply payload assembly and X_SEND_REPLY_WITH_RPCBUF()
for sending it all out.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-09-11 11:10:43 +02:00
Enrico Weigelt, metux IT consult
e474b81a45 damage: move the extension under the Xext directory
Tidying up the source tree structure a bit.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-09-10 17:06:13 +02:00
Enrico Weigelt, metux IT consult
b9b43e92eb xf86bigfont: drop obsolete SProcXF86BigfontQueryVersion()
It's doing nothing but calling ProcXF86BigfontQueryVersion(), so
we can call that function directly in the swapped dispatcher and
get rid of SProcXF86BigfontQueryVersion() entirely.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-09-10 13:45:29 +02:00
Enrico Weigelt, metux IT consult
6bc438ab5a treewide: use inline helper for accessing first screen
Instead of everybody directly accessing the (internal) screenInfo struct,
let those consumers only interested in first screen use a little helper.

Also caching the value if it's needed several times.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-09-10 13:45:05 +02:00
Enrico Weigelt, metux IT consult
d0a155c824 panoramix: drop unnecessary extern declarations
functions declarations are extern by default, no need to write it
explicitly.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-09-10 13:43:29 +02:00
Enrico Weigelt, metux IT consult
5a8da5bdc3 damage: consolidate damageextint.h
* move the stuff only used in .c file there
* drop unnecessary include files

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-09-10 13:42:53 +02:00
Enrico Weigelt, metux IT consult
006f0ec78c Xi: move VPC define into the only source using it
Only used inside listdev.c, so no need to have it within a header.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-09-10 13:42:31 +02:00
Enrico Weigelt, metux IT consult
b5210be9eb Xi: helper for private structure retrieval
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-09-10 13:41:47 +02:00