Commit Graph

9377 Commits

Author SHA1 Message Date
Enrico Weigelt, metux IT consult be7a034b0e xwayland: use CloseScreen hook
Wrapping ScreenRec's function pointers is problematic for many reasons,
so use the new screen close notify hook instead.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-05-02 19:43:54 +02:00
Enrico Weigelt, metux IT consult 0e5928738f dix: add per-screen close notify hook
Right now, extension specific actions on screen closing implemented by wrapping
the ScreenRec's PositionWindow() proc pointer: the extensions are storing the
original pointer in their private data and putting in their own one. On each
call, their proc restores the original one, calls it, and switches back again.
When multiple extensions doing so, they're forming a kind of daisy chain.
(the same is done for lots of other procs)

While that approach is looking nice and elegant on the drawing board, it's
complicated, dangerous like a chainsaw and makes debugging hard, leading to
pretty blurred API borders.

This commit introduces a simple approach for letting extension hook into the
screen closing path safely, w/o having to care much about side effects with
the call chain. Extensions now can simply register their hook proc (and an
opaque pointer) and get called back - w/o ever having to mess with the
ScreenRec's internal structures. These hooks are called before the original
vector (usually handled by DDX/screen driver directly) is called.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-05-02 19:43:53 +02:00
Enrico Weigelt, metux IT consult cee6167713 xwayland: use window destructor hook
Wrapping ScreenRec's function pointers is problematic for many reasons,
so use the new window destructor hook instead.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-05-02 19:43:53 +02:00
Enrico Weigelt, metux IT consult 9037dff02d xfree86: dri: use window destructor hook
Wrapping ScreenRec's function pointers is problematic for many reasons,
so use the new window destructor hook instead.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-05-02 19:43:53 +02:00
Enrico Weigelt, metux IT consult 4a5adb28fc xfree86: xv: use window destructor hook
Wrapping ScreenRec's function pointers is problematic for many reasons,
so use the new window destructor hook instead.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-05-02 19:43:53 +02:00
Enrico Weigelt, metux IT consult 616c669cbc kdrive: xv: use window destructor hook
Wrapping ScreenRec's function pointers is problematic for many reasons,
so use the new window destructor hook instead.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-05-02 19:43:53 +02:00
Enrico Weigelt, metux IT consult 88cdee6641 (!1936) xwin: fix missing include of mi/mi_priv.h
xwin relies on mi_priv.h being included indirectly, thus depending
on exact include within other header files. This can easily break if
something in other headers slightly changes.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-05-02 19:43:53 +02:00
Enrico Weigelt, metux IT consult 9dec841124 (!1943) xfree86: unexport xf86RandR12CreateScreenResources()
Not used by any drivers, so no need to keep it exported.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-05-02 19:43:53 +02:00
Enrico Weigelt, metux IT consult 5c991e9de5 (!1943) xfree86: unexport xf86RandR12CloseScreen()
Not used by any drivers, so no need to keep it exported.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-05-02 19:43:53 +02:00
Enrico Weigelt, metux IT consult d7672b3231 (!1946) kdrive: drop obsolete ifndef PHOENIX
The symbol isn't set anywhere, and git history didn't show anything
were it ever had been set, thus no need to keep this.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-05-02 19:43:53 +02:00
Enrico Weigelt, metux IT consult 15734e17f6 (!1947) kdrive: call miCreateScreenResources() drectly
No need for complicated wrapping/unwrapping: it's always just
miCreateResources() anyway - so we can call it directly.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-05-02 19:43:53 +02:00
Enrico Weigelt, metux IT consult cf2bbf6549 (!1947) kdrive: directly calling KdCloseScreen() instead of wrapping
No need to wrap CloseScreen proc vector, we can call KdCloseScreen() from
KdXVCloseScreen() directly.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-05-02 19:43:53 +02:00
Enrico Weigelt, metux IT consult 0e3825cd6f (!1947) kdrive: directly calling fbCloseScreen instead of wrapping
No need to wrap CloseScreen proc vector, we can call fbCloseScreen() from
KdCloseScreen() directly.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-05-02 19:43:53 +02:00
Enrico Weigelt, metux IT consult aecbce1a8d (!1948) xwayland: call miCreateScreenResources() directly
No need for complicated wrapping/unwrapping: it's always just
miCreateResources() anyway - so we can call it directly.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-05-02 19:43:53 +02:00
Enrico Weigelt, metux IT consult bac0f219aa (!1705) xwin: call miCreateScreenResources() directly
No need for complicated wrapping/unwrapping: it's always just
miCreateResources() anyway - so we can call it directly.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-05-02 19:43:53 +02:00
Enrico Weigelt, metux IT consult 070b444755 (!1705) xwin: drop wrapping on ScreenRec->ModifyPixmapHeader()
Instead of complicated wrapping, just call fbModifyPixmapHeader() directly.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-05-02 19:43:53 +02:00
Enrico Weigelt, metux IT consult 4778219331 (!1705) xwin: drop winResizeWindowMultiWindow()
This wrapping function for Screen->ResizeWindow() is does nothing more than
just call the original functions. So no need to keep wrapping it at all.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-05-02 19:43:53 +02:00
Enrico Weigelt, metux IT consult 720eb7462d (!1705) xwin: drop wrapping on ScreenRec->MoveWindow()
Instead of complicated wrapping, just call fbMoveWindow() directly.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-05-02 19:43:53 +02:00
Enrico Weigelt, metux IT consult e38a527f05 (!1705) xwin: drop wrapping on ScreenRec->RestackWindow()
This proc vector is optional (callers check for non-null) and neither fb nor
mi set it, so we can just assign our function directly. No need for wrapping.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-05-02 19:43:53 +02:00
Enrico Weigelt, metux IT consult 03059df0e2 (!1705) xwin: drop wrapping on ScreenRec->ReparentWindow()
This proc vector is optional (callers check for non-null) and neither fb nor
mi set it, so we can just assign our function directly. No need for wrapping.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-05-02 19:43:53 +02:00
Enrico Weigelt, metux IT consult 4d887919fa (!1705) xwin: drop wrapping on ScreenRec->UnrealizeWindow()
Instead of complicated wrapping, just call fbUnrealizeWindow() directly.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-05-02 19:43:53 +02:00
Enrico Weigelt, metux IT consult 82d98d3a21 (!1705) xwin: drop wrapping on ScreenRec->RealizeWindow()
Instead of complicated wrapping, just call fbRealizeWindow() directly.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-05-02 19:43:53 +02:00
Enrico Weigelt, metux IT consult 8df79bd787 (!1705) xwin: drop wrapping on ScreenRec->SetShape()
Instead of complicated wrapping, just call fbSetShape() directly.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-05-02 19:43:53 +02:00
Enrico Weigelt, metux IT consult 1990485a1c (!1705) xwin: drop winCopyWindowMultiWindow()
This wrapping function for Screen->CopyWindow() is does nothing more than
just call the original functions. So no need to keep wrapping it at all.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-05-02 19:43:53 +02:00
Enrico Weigelt, metux IT consult 293c673b55 (!1705) xwin: call winFinishScreenInitFB() directly
Both engines, GDI as well as DirectDraw, using the same screen init finish function,
so no need to keep indirection via per-engine callback pointer.

The winFinishScreenInitFB() can also be made static now.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-05-02 19:43:53 +02:00
Enrico Weigelt, metux IT consult 7e2e77b9fd (!1705) xwin: glx: drop glxWinUnrealizeWindow()
It does nothing more than just calling the original/wrapped function,
so we don't need that at all.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-05-02 19:43:52 +02:00
Enrico Weigelt, metux IT consult aad8b6f910 (!1705) xwin: glx: drop glxWinRealizeWindow()
It does nothing more than just calling the original/wrapped function,
so we don't need that at all.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-05-02 19:43:52 +02:00
Enrico Weigelt, metux IT consult c3256940a3 (!1705) xwin: drop wrapping on ScreenRec->ChangeWindowAttributes()
Instead of complicated wrapping, just call fbCreateWindow directly.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-05-02 19:43:52 +02:00
Enrico Weigelt, metux IT consult ac523d9041 (!1705) xwin: drop wrapping on ScreenRec->CreateWindow()
Instead of complicated wrapping, just call fbCreateWindow directly.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-05-02 19:43:52 +02:00
Enrico Weigelt, metux IT consult e44b9020c5 (!1705) xwin: drop wrapping on ScreenRec->PositionWindow()
Instead of complicated wrapping, just call fbPositionWindow directly.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-05-02 19:43:52 +02:00
Enrico Weigelt, metux IT consult c2eb26bb9b (!1705) xwin: drop wrapping on ScreenRec->DestroyWindow()
Instead of complicated wrapping, just call fbDestroyWindow directly.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-05-02 19:43:52 +02:00
Enrico Weigelt, metux IT consult 5544876d5e (!1949) xfree86: modeset: call miCreateScreenResources() directly
No need for complicated wrapping/unwrapping: it's always just
miCreateResources() anyway - so we can call it directly.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-05-02 19:43:52 +02:00
Alan Coopersmith 062c339519 modesetting: fix typo in XF86ModuleVersionInfo initialization
Found by clang 19.1.7:

hw/xfree86/drivers/modesetting/driver.c:163:21:
 warning: initializer overrides prior initialization of this subobject
 [-Winitializer-overrides]
  163 |     ._modinfo1_   = MODINFOSTRING2,
      |                     ^~~~~~~~~~~~~~
hw/xfree86/drivers/modesetting/driver.c:162:21:
 note: previous initialization is here
  162 |     ._modinfo1_   = MODINFOSTRING1,
      |                     ^~~~~~~~~~~~~~

Fixes: 2a10eff6c ("xfree86: modsetting: use explicit field initializers for XF86ModuleData")
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1910>
2025-04-19 17:02:15 +00:00
Alan Coopersmith f9d25189fa xfree86: make modeline2c.awk put a newline at the end of xf86DefModeSet.c
Clears warning from clang 19.1.7:
hw/xfree86/common/xf86DefModeSet.c:288:62:
 warning: no newline at end of file [-Wnewline-eof]
  288 | const int xf86NumDefaultModes = ARRAY_SIZE(xf86DefaultModes);
      |                                                              ^

Fixes: 3bf7ff703 ("Size xf86DefaultModes explicitly.")
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1910>
2025-04-19 17:02:15 +00:00
Enrico Weigelt, metux IT consult c445167da6 xwayland: no need to use WriteReplyToClient()
The WriteReplyToClient() macro is used for cases where byte swapping
is implemented in a separate callback function (set in a global vector
table). Since Xwl extension doesn't have such a callback, but does the
byte swapping directly in it's request handlers, there's no need to
call the WriteReplyToClient() macro - we can use WriteToClient() instead.

Fixes: 2700bc6045 - xwayland: add support for the XWAYLAND extension
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1878>
2025-04-07 07:47:30 +00:00
Enrico Weigelt, metux IT consult 32b3328e49 kdrive: Xkdrive.man: remove stray whitespace
Tiny editorial correction: drop a stray whitespace in manpage
that sneaked in at recent editorial changes.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1876>
2025-04-02 00:54:31 +00:00
Alan Coopersmith 5ac0a19e7f man pages: use .BR to mark up man page references
The name of a man page is typeset in bold and the section in roman
(see man-pages(7)).

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1875>
2025-03-29 13:36:54 -07:00
Bjarni Ingi Gislason bcf743f356 inputtestdrv.4: editorial changes for this man page
Use the correct macro for the font change of a single argument or
split the argument into two.

43:.BI Keyboard
46:.BI Pointer
52:.BI PointerAbsolute
58:.BI PointerAbsoluteProximity
62:.BI Touch
103:.BI xf86ITEventWaitForSync

-.-.

Wrong distance between sentences in the input file.

Separate the sentences and subordinate clauses; each begins on a new
line.  See man-pages(7) ("Conventions for source file layout") and
"info groff" ("Input Conventions").

19:server as input events. It supports the full set of the xf86 driver APIs
20:exposed by Xorg. The primary use cases of this input driver are various
29:is created after the driver is initialized. The paths to the socket is passed
37:Sets the path where the driver will create a named socket. Any existing file
47:Initializes a relative-mode pointer device. It will have four valuators -
53:Initializes an absolute-mode pointer device. It will have four valuators -
87:specifies the protocol version supported by it. If this version is lower than
91:to the driver. Each event is an instance of one of the
93:structs. The length field defines the full length of the struct in bytes and
96:The responses from the server follow the same structure. Each response is an
99:structs. The length field defines the full length of the struct in bytes and
104:event. After sending such event, the client must read of a
106:events. The completion of the read operation indicates that Xorg has fully

-.-.

The name of a man page is typeset in bold and the section in roman
(see man-pages(7)).

24:Please refer to xorg.conf(5) for general configuration
112:Xorg(1), xorg.conf(5), Xserver(1), X(7)

-.-

Additionally:

"read of a xf86... event" -> "read an xf86... event"

Originally from: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1095449

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1875>
2025-03-29 12:35:46 -07:00
Bjarni Ingi Gislason 49378eb510 exa.man: editorial changes for this man page
Wrong distance between sentences in the input file.

Separate the sentences and subordinate clauses; each begins on a new
line.  See man-pages(7) ("Conventions for source file layout") and
"info groff" ("Input Conventions").

Mark a final abbreviation point as such by suffixing it with "\&".

25:Disables acceleration of uploading pixmap data to the framebuffer. Default: No.

-.-.

Split a punctuation mark from a single argument for a two-font macro

40:.BR xorg.conf(5).

-.-.

Section headings (.SH and .SS) do not need quoting.

38:.SH "SEE ALSO"

-.-.

Output from "test-groff  -mandoc -t -K utf8 -rF0 -rHY=0 -rCHECKSTYLE=10 -ww -z ":

an.tmac:<stdin>:40: misuse, warning: .BR is for at least 2 arguments, got 1
	Use macro '.B' for one argument or split argument.

Originally from: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1095446

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1875>
2025-03-29 12:25:00 -07:00
Bjarni Ingi Gislason c7b6424eed xorg.conf.5: Some formatting and word corrections in the manual
see man-pages(7) for a style manual.

Originally from: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=919143

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1875>
2025-03-29 10:19:09 -07:00
Tanguy Ortolo e4d2de8198 xorg.conf.man: Complete the xorg.conf.5 manpage with Option "Disable"
The xorg.conf.5 manpage mentions an "Enable" option to enable a monitor
regardless of whether or not it is connected, but gives no indication of how
to disable it. This patch corrects that by documenting the "Disable" option.

Orignally from: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=755809

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1875>
2025-03-29 10:03:36 -07:00
Bjarni Ingi Gislason 1f8e32ea65 xorg.conf.man: unprotected period in ellipses
Originally from: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=667983

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1875>
2025-03-29 09:51:17 -07:00
Peter Hutterer 4966fbb55a meson.build: print a summary of the DDX to build
Makes it easier to detect accidentally "oops, i'm not building Xwayland"

Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1869>
2025-03-24 03:05:35 +00:00
Alan Coopersmith b73cd6066a pkgconfig files: Add URL
https://github.com/pkgconf/pkgconf/blob/master/man/pc.5 says it's
a mandatory field in *.pc files.

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1863>
2025-03-09 07:32:28 +00:00
Enrico Weigelt, metux IT consult af86c5cbc2 Xnest: use authorative declarations from X11/XKBlib.h
Better use the headers from the library we're linking against,
instead of having our own private declarations.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1842>
2025-02-28 17:27:05 +00:00
Enrico Weigelt, metux IT consult cab3856903 xfree86: os-support: fix FTBS when no recent enough libdrm found
On Linux, the only supported platform bus backend (*1) is via DRM/DRI.
Trying to build it w/o (recent enough) libdrm fails as it tries to
compile the drm-based implementation, w/o having drm.h available. (*2)

In order to fix this, we need to compile noop-implementation instead.

*1) platform specific code for detecting video devices
*2) https://gitlab.freedesktop.org/xorg/xserver/-/issues/1771

Issue: https://gitlab.freedesktop.org/xorg/xserver/-/issues/1771
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1848>
2025-02-28 16:15:32 +00:00
Enrico Weigelt, metux IT consult e2ac461629 xfree86: platform_noop: add missing functions
In order to be able to build on Linux w/ platform_noop
(when no recent enough libdrm found), a few more dummy functions
are needed here.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1848>
2025-02-28 16:15:32 +00:00
Enrico Weigelt, metux IT consult fe9c911e22 xfree86: xf86helper: fix NULL dereference
xf86MatchDevice() can segfault if screensecptr->device is NULL.

Issue: https://gitlab.freedesktop.org/xorg/xserver/-/issues/1767
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1847>
2025-02-28 16:41:09 +01:00
Enrico Weigelt, metux IT consult f1d87a38ae Revert "mi: drop now obsolete mioverlay.h"
This reverts commit 6825f89cd2.

Requested by Nvidia - their proprietary driver still needs it.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1843>
2025-02-27 11:53:54 +00:00
Enrico Weigelt, metux IT consult 3f469acb96 panoramix: don't install panoramiX.h and panoramiXsrv.h
Not used by any drivers/modules, so no need to keep them public.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1815>
2025-02-24 20:06:30 +00:00