It will take some time for a new libpciaccess to be released and
even then bumping the dependency for libpciaccess isn't attractive.
If an older libpciaccess is used just add a static inline define.
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2038>
The previous change is not enough, as WM_KILLFOCUS can apparently be
sent to the window losing focus after WM_ACTIVATE has been sent to
the window gaining focus.
Try using WM_SETFOCUS instead, as that has the correct ordering and seems
more logical.
The test "!pWin || !pWin->overrideRedirect" is confusingly written: It's
true if:
(a) pWin is NULL (= X window doesn't exist, shouldn't happen), or
(b) pWin->overrideRedirect is FALSE
i.e. the intended effect is "don't give focus to override redirect windows"
There seem to be some cases where this still isn't quite correct: A
reproduction isn't known, but it seems to be related to minimizing a
maximized Windows window, and having window activation move to a
maximized X window beneath it.
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/736>
In the multiwindow WM, we need to cancel the X input focus if the
Windows input focus has gone to the desktop, or another application's
window.
We could maybe avoid some unneeded work by not doing this if the
WM_KILLFOCUS wParam is another window owned by us, which is immediately
going to be given the X input focus.
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/736>
Present calls drmmode_set_mode_major() as part of ms_present_unflip(),
which leads to a crash due to the recursive attempt to force present to
unflip when it already is.
Fix it by simply skipping the forced present unflip when present itself is
unflipping. This also speeds up drmmmode_prepare_modeset() when present
isn't even flipping to begin with.
Closes: https://gitlab.freedesktop.org/xorg/xserver/-/issues/1791
Fixes: 899c87af1 ("modesetting: unflip before any setcrtc() calls")
Signed-off-by: Sultan Alsawaf <sultan@kerneltoast.com>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1793>
Use intel ddx only on pre-gen4 hw, newer ones will fall back to modesetting.
Instead of defaulting to the Intel driver for all Intel hardware, only
default it for older hardware for which it has shown to be better for.
Note that Debian/Fedora and their derivatives, as well as the yocto project
have been carrying this patch for many years:
192254841aee515e44b0
so this simply aligns xserver upstream with Linux distributions.
Signed-off-by: California Sullivan <california.l.sullivan@intel.com>
Signed-off-by: Alexander Kanavin <alex@linutronix.de>
Co-authored-by: Balló György <ballogyor@gmail.com>
Reviewed-by: Emma Anholt <emma@anholt.net>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1887>
When dmabuf_capable is enabled, ms_present_check_unflip may return
with reason PRESENT_FLIP_REASON_BUFFER_FORMAT to be reported back
to client by PresentCompleteModeSuboptimalCopy. We should not
overwrite it by page flip reasons anyway when exit.
This fix also avoid changing vblank->exec_msc in present_scmd_pixmap()
which caused by page flip reasons to prevent a present to be executed
immediatly. So that we can cancel pending vblanks when new vblanks with
same msc arrive. This happens when application just starts.
This problem can be observed at least using radeonsi OGL driver, start
xserver with dmabuf_capable enabled, no window manager, glxgears will
stuck for the first several seconds. If using a composite window manager
like Mutter, we can't observe the glxgears stuck, but the prensent
complete event still shows unexpected Copy mode instead of
PresentCompleteModeSuboptimalCopy or Skip mode.
glxgears window msc is 0 at the beginning, it will send present request
with target msc = 1, 2, 3, ... N before server send back the complete
event for target msc = 1. But server side window msc is way bigger than N,
so it will think all these present requests are outdated and just show the
Nth request at the next vblank. [1 .. N-1] requests should be skipped.
But without this fix, all [1 .. N] presents will be executed with Copy
mode which causes stuck.
Fixes: a94dd9536 ("modesetting: add support for TearFree page flips")
Reviewed-by: Sultan Alsawaf <sultan@kerneltoast.com>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2091>
replacement for GTF_SUPPORTED() macro that's not a good API isolation
at all. Drivers should use that function instead for checking whether
the monitor supports GTF.
Should be backported to older releases, too - so drivers don't need
extra per-Xserver-version tweaks.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
When running in a virtual machine, the cursor pitch
may not behave the same as it does on bare metal.
This patch disables a power consumption optimization
when running in a vm, working around the cursor pitch issues.
This means that some vm users who previously had a working
cursor pitch may now see some increased power consumption.
Fixes: https://github.com/X11Libre/xserver/issues/1816
Signed-off-by: stefan11111 <stefan11111@shitposting.expert>
os.h still defining our own timingsafe_memcmp() prototype when this
symbol isn't set - this is causing trouble with drivers on FreeBSD.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
This functions is designed for some legacy keyboard drivers
(eg. xf86-input-keyboard) that need to get the fd to the console
device, so they don't need to directly access xf86Info field anymore.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
XF86_MODULE_DATA_INPUT() creates XF86ModuleData field for input driver,
while XF86_MODULE_DATA_VIDEO creating one for a video driver.
These are filled with given values, _X_EXPORT'ed and properly named so
the module loader can find them. Also creating the associated
XF86ModuleVersionInfo field and link them into the XF86ModuleData.
Example:
XF86_MODULE_DATA_INPUT(
egalax,
eGalaxPlug,
eGalaxUnplug,
"egalax",
PACKAGE_VERSION_MAJOR,
PACKAGE_VERSION_MINOR,
PACKAGE_VERSION_PATCHLEVEL);
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
Reduce the effort of declaring/filling an video driver's module version
struct to short statement like this:
XF86_MODULE_VERSION_VIDEO("ati",
PACKAGE_VERSION_MAJOR,
PACKAGE_VERSION_MINOR,
PACKAGE_VERSION_PATCHLEVEL);
This will create a properly filled XF86ModuleVersionInfo structure
named `modInfo`.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
Reduce the effort of declaring/filling an input driver's module version
struct to short statement like this:
XF86_MODULE_VERSION_INPUT("egalax",
PACKAGE_VERSION_MAJOR,
PACKAGE_VERSION_MINOR,
PACKAGE_VERSION_PATCHLEVEL);
This will create a properly filled XF86ModuleVersionInfo structure
named `modInfo`.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
This once was needed on including xf86driproto.h, but these day
have gone now for aeons.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
The include guard in this file has been incorrectly moved up breaking
the #include_next behavior on MS Windows builds.
Moved it to its correct location.
Signed-off-by: b-aaz <b-aazbsd@proton.me>
Brought back the code removed in that commit so that we can bring back
Cygwin support.
Small changes are done in the process of resolving conflicts against the
current head.
Some checks have not been reverted, because they were not necessary
anymore.
Signed-off-by: b-aaz <b-aazbsd@proton.me>
This was a old hack used before Meson 0.61.0 added install_symlink, we
are at the meson release 1.10.0 so it is safe to use the new proper
function for this task.
Also used the X server's executable name as the link target name, and as
the SUID wrapper's name.
Moved the minimum Meson version up to 0.61.0.
Signed-off-by: b-aaz <b-aazbsd@proton.me>
Both files are equal, but drivers should gradually migrate to the
new one, while the old one is phased out.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
These are only defined on NetBSD and not used anywhere, and not
functional at all (just killing the Xserver). No need to carry
them around any longer.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
winsock2.h needs to be included before windows.h
> /usr/share/mingw-w64/include/winsock2.h:15:2: error: #warning Please include winsock2.h before windows.h [-Werror=cpp]
> 15 | #warning Please include winsock2.h before windows.h
> | ^~~~~~~
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
KeySym and xcb_keysym_t should both be 32bit, but for the compiler
they're long vs int, so it's spitting out a warning here. That's
coming from xorgproto's weird way of defining those types.
Add static type size assert and hard typecast to silence it.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
These macros are always defined to free() and malloc(), so we don't
really need them, instead can use those functions directly.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
This allows us to move around probing DDX specific logic out of the fat
include/meson.build to more appropriate places, eg. xfree86/meson.build.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
This function had been removed back two decades ago, so it's time to update
documentation now.
Fixes: 46f55f5dea
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>