Instead of complex macro machinery, just move the conditional swapping
directly into ProcXvQueryExtension().
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
For now that case doensn't practically happen yet - all fields are at
least assigned to some default/dummy function. But in the future, we
might wanna get rid of dummies.
From now on, video drivers are allowed to assign them to NULL, if they
don't wanna have the default implementations and nothing happening
at all instead (no more need for having their own empty dummies)
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
Add compile-time checks on whether sizeof(foo) == SIZEOF(foo),
using new static assert macro.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
The X protocol types from xorgproto all have corresponding sz_<typename>
defines with their actual network payload size (this can be checked via
SIZEOF() macro).
In theory, this should always be the same as sizeof(), but just to be sure,
adding a macro for a static assert on that.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
This allows us to pass flags to the function, avoiding the forced
implicit GBM_BO_USE_SCANOUT which happens with the older version.
Backport from Xwayland:
f31ca9238f
Signed-off-by: stefan11111 <stefan11111@shitposting.expert>
If we're using implicit modifiers, we'll pass NULL and zero modifiers.
Lets just use the legacy API directly instead.
Backport from Xwayland:
08b0ea09de
Signed-off-by: stefan11111 <stefan11111@shitposting.expert>
This likely wasn't a problem, as *num_modifiers was 0, so likely no
data was read from a potentially uninitilaized pointer, but it's
still better to explicitly set it to NULL.
Signed-off-by: stefan11111 <stefan11111@shitposting.expert>
Since we're now constructing the payload step by step via x_rpcbuf,
there's no need to have an extra loop for collecting dbeScreenVisualInfo's,
we can just fetch and process them one by one, and so don't need extra
temporary storage for them.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
Since using x_rpcbuf, we don't need extra computation of the payload_length,
as the x_rpcbuf already knows the amount of data written into it.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
By using the new x_rpcbuf, it's easy to assemble packets step by step,
without even knowing the final size yet and doing the write out in
one step.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
Low level OS specific code should not depend on higher level protocol
headers. This also removes yet another conflict with win32/mingw headers.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
Mention the integration of the June 2025 X.org CVE fixes into the XLibre
Xserver. Add a link to our Q&A discussions as well.
Fixes: #522
Signed-off-by: callmetango <callmetango@users.noreply.github.com>
`arg` is also a parameter of that functions, so we really shouldn't
also have a local variable by the same name.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
Previously, when parsing multiple configuration files containing the same
section names, only the last occurrence of each section would be retained.
Earlier definitions were silently discarded due to unconditional memory
allocation and overwriting of pointers during parsing.
This resulted in incomplete or incorrect configuration state when users
intended to merge or extend configuration through multiple files.
The section parsing functions in Files.c, Flags.c, and Module.c now
accept existing section pointers. These functions allocate new memory only
if the input pointer is NULL, preserving earlier data when re-parsing.
read.c has been updated to detect and pass existing section pointers when
encountering duplicate sections across files, preventing loss of prior content.
With these changes, the parser properly accumulates and merges configuration
data across multiple files, ensuring that all relevant settings are preserved.
Backport from Xorg.
References:
https://gitlab.freedesktop.org/xorg/xserver/-/issues/467https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2045Fixes: #279
Signed-off-by: callmetango <callmetango@users.noreply.github.com>
Both are potentially tunable variables, and MAXCLIENTS is (still) used by
intel-driver, but also by os specific parts that must not include misc.h
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
This patch fixes Xserver crashes when evdev or synaptics input drivers are used.
These (and maybe other) driver use alternate forms "%#..." in formats for
xf86IDrvLogVerb() function, which in turn uses signal-safe vpnprintf().
The last function does not recognize alternate forms and exits abnormally, which
causes Xserver to crash. The patch make vpnprintf() to ignore alternate forms.
Signed-off-by: Oleh Nykyforchyn <oleh.nyk@gmail.com>
It is a patch that fixes xserver build if libdrm is too old.
Now misyncshm.c compilation depends on dri3, which is incorrect. If libdrm
is not recent enough, then dri3 is not built, the file misyncshm.c
is not compiled, and the function miSyncShmScreenInit() is unavailable.
It is called in glamor_sync.c if xshmfence is present, which causes
a compilation error. This patch makes misyncshm.c compile if xshmfence
is found.
Signed-off-by: Oleh Nykyforchyn <olen.nyk@gmail.com>
The request struct's length fields aren't used anymore - we have the
client->req_len field instead, which also is bigreq-compatible.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
The request struct's length fields aren't used anymore - we have the
client->req_len field instead, which also is bigreq-compatible.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
The request struct's length fields aren't used anymore - we have the
client->req_len field instead, which also is bigreq-compatible.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
Implement what was discussed in https://github.com/X11Libre/xserver/issues/478
Use dependency() instead of cc.check_header(), as the former is the
intended way to check for dependencies.
cc.check_headers would turn udev on on systems where libudev.h
is present, but libudev.pc isn't.
Thos would do the wrong thing on systems where the admin wants to
have that header for some reason, but doesn't want programs to use
libudev.
We also keep udev and udev_kms a tristate, so we try to do
the right thing when the user doesn't explicitly pass
values for udev and udev_kms.
Signed-off-by: stefan11111 <stefan11111@shitposting.expert>
xdmcp.h is using types from <X11/Xdmcp.h>, but forgot to include it.
This just popped up with building w/ -Dxdmcp=false, because that file was
included in the wrong place (osdep.h) and only conditionally.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
This commit changes legacy behavior, if anyone was relying on it,
they can make an issue and we can change it back.
Signed-off-by: stefan11111 <stefan11111@shitposting.expert>
if the framebuffer device was passed by the user and not guessed
Assume the user knows what they are doing if they tell us to
use a particular framebuffer device, and skip the checks we
have for guessed devices
Signed-off-by: stefan11111 <stefan11111@shitposting.expert>
The fbdev pci probe doesn't use the fbdev passed by the user,
and instead tries to guess what framebuffer the user wants to use.
Only if that fails, fbdev falls back to the option passed by the user.
This is backwards, if the user explicitly passes a framebuffer
device to use, the X server should use that, and fall back on
guessing if that fails.
Signed-off-by: stefan11111 <stefan11111@shitposting.expert>
The 'mode' argument for open() is only used when files
are created, and files aren't created here.
Signed-off-by: stefan11111 <stefan11111@shitposting.expert>