Compare commits

..

15 Commits

Author SHA1 Message Date
stefan11111 d403cbd25c kdrive: ephyr: initialize OS specific callback vectors
These will be used by subsequent commits for generic Kdrive
functions calling back into the OS specific parts

Signed-off-by: stefan11111 <stefan11111@shitposting.expert>
2025-07-04 19:36:04 +02:00
stefan11111 a46fd9f16e kdrive: add KdOsInit
Kdrive X servers used to do the OS-speciffic init part using KdOsInit.
This was changed in modern Xorg because Xephyr is the only kdrive
X server there, so there was no need to keep this generic.
Since we want to eventually add Xfbdev, we need to add this back.

Signed-off-by: stefan11111 <stefan11111@shitposting.expert>
2025-07-04 19:36:04 +02:00
Enrico Weigelt, metux IT consult fc9bd6b175 minor release 25.0.0.4
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-07-04 17:26:48 +02:00
Enrico Weigelt, metux IT consult d338bf6e68 namespace: drop unused winIsRoot()
Not used in this file, so no need to keep it around anymore.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-07-04 17:11:54 +02:00
Enrico Weigelt, metux IT consult c6777fe48e xnest: drop unused DarwinHandleGUI()
Obsolete since 17 years now, probably just forgotten to clean up.

Fixes: ef1c520537
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-07-04 17:10:02 +02:00
Enrico Weigelt, metux IT consult 2f46a02217 vfb: drop unused DarwinHandleGUI()
Obsolete since 17 years now, probably just forgotten to clean up.

Fixes: ef1c520537
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-07-04 17:10:02 +02:00
Enrico Weigelt, metux IT consult 93013224b4 xquartz: fix incomplete prototype of executable_path()
> ../hw/xquartz/mach-startup/bundle_trampoline.c:53:29: warning: a function declaration without a prototype is deprecated in all versions of C [-Wstrict-prototypes]
> static char *executable_path() {
>                             ^
>                              void
> 1 warning generated.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-07-04 17:09:33 +02:00
Enrico Weigelt, metux IT consult 74d5b7bb05 xquartz: drop unused field declarations in request handlers
Silence compiler warning on unused fields, eg.:

> ../hw/xquartz/applewm.c:692:5: warning: unused variable 'stuff' [-Wunused-variable]
>     REQUEST(xAppleWMQueryVersionReq);
>     ^
> ../include/dix.h:65:12: note: expanded from macro 'REQUEST'
>     type * stuff = (type *)client->requestBuffer;
>            ^

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-07-04 17:08:46 +02:00
stefan11111 160ab343ea mi: move miPointerCloseScreen to hookPostClose
Signed-off-by: stefan11111 <stefan11111@shitposting.expert>
2025-07-03 18:46:58 +02:00
Enrico Weigelt, metux IT consult 2069db50e7 xfree86: compat: make xf86MsgVerb() a bit less noisier
print the driver bug warning only once.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-07-03 16:55:14 +02:00
Nathan Kidd 7ca8b37ab1 glx: Don't blindly write 8 bytes in GLX single replies
Previously we leaked stack when invalid enum parameters were
specified and caused __glGet*_size functions to return a 0 size.

Further, we read out-of-bounds (and leaked) when the input data was less
than 8 bytes (__glXDispSwap_GetFramebufferAttachmentParameteriv and
__glXDisp_GetRenderbufferParameteriv).

Now we only write a single element in the reply padding, and only when there
is a single element. This is what the Mesa client-side libGL expects, and
restores original GLX server behaviour, matching both pre-public (1996) SGI GLX
and XFree86 4.

The main risk of this change is if we have any error in element count or size;
previously it may not have mattered but now it does.

There are no piglit result changes from this modification using either mesa
libGLX or NVIDIA libGLX.

For performance considerations, an extra conditional and variable-length
memcpy has no meaningful impact on the indirect rendering pipeline cost.

There is still the possiblity to leak if our size checks allow an enum that
the GL implemention does not. Guarding against that requires zero-initializing
all temp storage, which wants re-evaluation of the blind 200-byte buffers
used for many calls and thus is a much bigger change.

Signed-off-by: Nathan Kidd <nkidd@rocketsoftware.com>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1647>
2025-07-03 16:43:18 +02:00
Nathan Kidd 5b810bac5e glx: Fix out-of-bounds reads from negative return
The callers of these functions were casting -1 to unsigned and then
using 4GB indexes. By returning 0 we match all the other size functions.

GLX size functions return -1 to indicate error, but GL size functions return 0.

Signed-off-by: Nathan Kidd <nkidd@rocketsoftware.com>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1647>
2025-07-03 16:43:18 +02:00
dasha_uwu 7c64a06ba4 treewide: remove "lib" prefix in static_library names (meson)
this was producing static libraries named "liblibsomething.a"

Signed-off-by: dasha_uwu <dasha@linuxping.win>
2025-07-03 12:01:52 +02:00
Enrico Weigelt, metux IT consult 5d7be80305 minor release 25.0.0.3
minor bugfix release.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-07-02 17:44:12 +02:00
stefan11111 6851e17816 meson.build: meson_options.txt: add build option to disable building tests
These tests take a long time to build and link, especially with lto.

Signed-off-by: stefan11111 <stefan11111@shitposting.expert>
2025-07-02 17:40:10 +02:00
43 changed files with 94 additions and 130 deletions

View File

@ -58,13 +58,13 @@ if build_xv
hdrs_xext += ['xvdix.h', 'xvmcext.h'] hdrs_xext += ['xvdix.h', 'xvmcext.h']
endif endif
libxserver_xext = static_library('libxserver_xext', libxserver_xext = static_library('xserver_xext',
srcs_xext, srcs_xext,
include_directories: inc, include_directories: inc,
dependencies: common_dep, dependencies: common_dep,
) )
libxserver_xext_vidmode = static_library('libxserver_xext_vidmode', libxserver_xext_vidmode = static_library('xserver_xext_vidmode',
'vidmode.c', 'vidmode.c',
include_directories: inc, include_directories: inc,
dependencies: common_dep, dependencies: common_dep,

View File

@ -11,14 +11,6 @@
#include "namespace.h" #include "namespace.h"
#include "hooks.h" #include "hooks.h"
static inline Bool winIsRoot(WindowPtr pWin) {
if (!pWin)
return FALSE;
if (pWin->drawable.pScreen->root == pWin)
return TRUE;
return FALSE;
}
void hookWindowProperty(CallbackListPtr *pcbl, void *unused, void *calldata) void hookWindowProperty(CallbackListPtr *pcbl, void *unused, void *calldata)
{ {
XNS_HOOK_HEAD(PropertyFilterParam); XNS_HOOK_HEAD(PropertyFilterParam);

View File

@ -1,5 +1,5 @@
libxserver_namespace = static_library( libxserver_namespace = static_library(
'libxserver_namespace', 'xserver_namespace',
[ [
'config.c', 'config.c',
'hook-client.c', 'hook-client.c',

View File

@ -261,9 +261,10 @@ ProcSELinuxGetPropertyContext(ClientPtr client, void *privKey)
if (rc != Success) if (rc != Success)
return rc; return rc;
pProp = dixLookupProperty(pWin, stuff->property, client, DixGetAttrAccess); rc = dixLookupProperty(&pProp, pWin, stuff->property, client,
if (!pProp) DixGetAttrAccess);
return BadMatch; if (rc != Success)
return rc;
obj = dixLookupPrivate(&pProp->devPrivates, privKey); obj = dixLookupPrivate(&pProp->devPrivates, privKey);
return SELinuxSendContextReply(client, obj->sid); return SELinuxSendContextReply(client, obj->sid);

View File

@ -53,14 +53,14 @@ srcs_xi = [
'xiwarppointer.c', 'xiwarppointer.c',
] ]
libxserver_xi = static_library('libxserver_xi', libxserver_xi = static_library('xserver_xi',
srcs_xi, srcs_xi,
include_directories: inc, include_directories: inc,
dependencies: common_dep, dependencies: common_dep,
) )
srcs_xi_stubs = ['stubs.c'] srcs_xi_stubs = ['stubs.c']
libxserver_xi_stubs = static_library('libxserver_xi_stubs', libxserver_xi_stubs = static_library('xserver_xi_stubs',
srcs_xi_stubs, srcs_xi_stubs,
include_directories: inc, include_directories: inc,
dependencies: common_dep, dependencies: common_dep,

View File

@ -10,7 +10,7 @@ hdrs_composite = [
'compositeext.h', 'compositeext.h',
] ]
libxserver_composite = static_library('libxserver_composite', libxserver_composite = static_library('xserver_composite',
srcs_composite, srcs_composite,
include_directories: inc, include_directories: inc,
dependencies: common_dep, dependencies: common_dep,

View File

@ -28,7 +28,7 @@ if build_xorg
install_dir: join_paths(get_option('datadir'), 'X11/xorg.conf.d')) install_dir: join_paths(get_option('datadir'), 'X11/xorg.conf.d'))
endif endif
libxserver_config = static_library('libxserver_config', libxserver_config = static_library('xserver_config',
srcs_config, srcs_config,
include_directories: inc, include_directories: inc,
dependencies: config_dep, dependencies: config_dep,

View File

@ -2,7 +2,7 @@ srcs_damageext = [
'damageext.c', 'damageext.c',
] ]
libxserver_damageext = static_library('libxserver_damageext', libxserver_damageext = static_library('xserver_damageext',
srcs_damageext, srcs_damageext,
include_directories: inc, include_directories: inc,
dependencies: common_dep, dependencies: common_dep,

View File

@ -3,7 +3,7 @@ srcs_dbe = [
'midbe.c', 'midbe.c',
] ]
libxserver_dbe = static_library('libxserver_dbe', libxserver_dbe = static_library('xserver_dbe',
srcs_dbe, srcs_dbe,
include_directories: inc, include_directories: inc,
dependencies: common_dep, dependencies: common_dep,

View File

@ -689,6 +689,4 @@ static inline ClientPtr dixLookupXIDOwner(XID xid)
return NullClient; return NullClient;
} }
void dixFreeAllScreens(void);
#endif /* _XSERVER_DIX_PRIV_H */ #endif /* _XSERVER_DIX_PRIV_H */

View File

@ -317,8 +317,20 @@ dix_main(int argc, char *argv[], char *envp[])
screenInfo.screens[i]->root = NullWindow; screenInfo.screens[i]->root = NullWindow;
CloseDownDevices(); CloseDownDevices();
CloseDownEvents(); CloseDownEvents();
dixFreeAllScreens();
for (i = screenInfo.numGPUScreens - 1; i >= 0; i--) {
dixFreeScreen(screenInfo.gpuscreens[i]);
screenInfo.numGPUScreens = i;
}
memset(&screenInfo.numGPUScreens, 0, sizeof(screenInfo.numGPUScreens));
for (i = screenInfo.numScreens - 1; i >= 0; i--) {
dixFreeScreen(screenInfo.screens[i]);
screenInfo.numScreens = i;
}
memset(&screenInfo.screens, 0, sizeof(screenInfo.numGPUScreens));
ReleaseClientIds(serverClient); ReleaseClientIds(serverClient);
dixFreePrivates(serverClient->devPrivates, PRIVATE_CLIENT); dixFreePrivates(serverClient->devPrivates, PRIVATE_CLIENT);

View File

@ -57,13 +57,13 @@ endif
dtrace_dep = declare_dependency(sources: [dtrace_src, dtrace_hdr]) dtrace_dep = declare_dependency(sources: [dtrace_src, dtrace_hdr])
libxserver_dix = static_library('libxserver_dix', libxserver_dix = static_library('xserver_dix',
[ srcs_dix, builtinatoms_src ], [ srcs_dix, builtinatoms_src ],
include_directories: inc, include_directories: inc,
dependencies: [ dtrace_dep, common_dep, ] dependencies: [ dtrace_dep, common_dep, ]
) )
libxserver_main = static_library('libxserver_main', libxserver_main = static_library('xserver_main',
'stubmain.c', 'stubmain.c',
include_directories: inc, include_directories: inc,
dependencies: common_dep, dependencies: common_dep,

View File

@ -92,7 +92,8 @@ PrintPropertys(WindowPtr pWin)
} }
#endif #endif
PropertyPtr dixLookupProperty(WindowPtr pWin, Atom propertyName, int
dixLookupProperty(PropertyPtr *result, WindowPtr pWin, Atom propertyName,
ClientPtr client, Mask access_mode) ClientPtr client, Mask access_mode)
{ {
PropertyPtr pProp; PropertyPtr pProp;
@ -100,14 +101,14 @@ PropertyPtr dixLookupProperty(WindowPtr pWin, Atom propertyName,
client->errorValue = propertyName; client->errorValue = propertyName;
for (pProp = wUserProps(pWin); pProp; pProp = pProp->next) for (pProp = pWin->properties; pProp; pProp = pProp->next)
if (pProp->propertyName == propertyName) { if (pProp->propertyName == propertyName)
if (XaceHookPropertyAccess(client, pWin, &pProp, access_mode) != Success) break;
return NULL;
return pProp;
}
return NULL; if (pProp)
rc = XaceHookPropertyAccess(client, pWin, &pProp, access_mode);
*result = pProp;
return rc;
} }
static void static void
@ -222,7 +223,6 @@ ProcRotateProperties(ClientPtr client)
if (rc != Success) if (rc != Success)
goto out; goto out;
}
props[i] = pProp; props[i] = pProp;
saved[i] = *pProp; saved[i] = *pProp;
@ -333,7 +333,7 @@ dixChangeWindowProperty(ClientPtr pClient, WindowPtr pWin, Atom property,
access_mode = (mode == PropModeReplace) ? DixWriteAccess : DixBlendAccess; access_mode = (mode == PropModeReplace) ? DixWriteAccess : DixBlendAccess;
/* first see if property already exists */ /* first see if property already exists */
pProp = dixLookupProperty(pWin, property, pClient, access_mode); rc = dixLookupProperty(&pProp, pWin, property, pClient, access_mode);
if (rc == BadMatch) { /* just add to list */ if (rc == BadMatch) { /* just add to list */
if (!MakeWindowOptional(pWin)) if (!MakeWindowOptional(pWin))
@ -365,7 +365,7 @@ dixChangeWindowProperty(ClientPtr pClient, WindowPtr pWin, Atom property,
pProp->next = pWin->properties; pProp->next = pWin->properties;
pWin->properties = pProp; pWin->properties = pProp;
} }
else { else if (rc == Success) {
/* To append or prepend to a property the request format and type /* To append or prepend to a property the request format and type
must match those of the already defined property. The must match those of the already defined property. The
existing format and type are irrelevant when using the mode existing format and type are irrelevant when using the mode
@ -427,6 +427,8 @@ dixChangeWindowProperty(ClientPtr pClient, WindowPtr pWin, Atom property,
return rc; return rc;
} }
} }
else
return rc;
if (sendevent) { if (sendevent) {
deliverPropertyNotifyEvent(pWin, PropertyNewValue, pProp); deliverPropertyNotifyEvent(pWin, PropertyNewValue, pProp);
@ -442,8 +444,8 @@ DeleteProperty(ClientPtr client, WindowPtr pWin, Atom propName)
PropertyPtr pProp, prevProp; PropertyPtr pProp, prevProp;
int rc; int rc;
pProp = dixLookupProperty(pWin, propName, client, DixDestroyAccess); rc = dixLookupProperty(&pProp, pWin, propName, client, DixDestroyAccess);
if (!pProp) if (rc == BadMatch)
return Success; /* Succeed if property does not exist */ return Success; /* Succeed if property does not exist */
if (rc == Success) { if (rc == Success) {
@ -465,19 +467,7 @@ DeleteProperty(ClientPtr client, WindowPtr pWin, Atom propName)
free(pProp->data); free(pProp->data);
dixFreeObjectWithPrivates(pProp, PRIVATE_PROPERTY); dixFreeObjectWithPrivates(pProp, PRIVATE_PROPERTY);
} }
else { return rc;
/* Need to traverse to find the previous element */
prevProp = pWin->optional->userProps;
while (prevProp->next != pProp)
prevProp = prevProp->next;
prevProp->next = pProp->next;
}
deliverPropertyNotifyEvent(pWin, PropertyDelete, pProp);
free(pProp->data);
dixFreeObjectWithPrivates(pProp, PRIVATE_PROPERTY);
return Success;
} }
void void

View File

@ -94,7 +94,7 @@ typedef struct _PropertyFilterParam {
extern CallbackListPtr PropertyFilterCallback; extern CallbackListPtr PropertyFilterCallback;
PropertyPtr dixLookupProperty(WindowPtr pWin, Atom proprty, int dixLookupProperty(PropertyPtr *result, WindowPtr pWin, Atom proprty,
ClientPtr pClient, Mask access_mode); ClientPtr pClient, Mask access_mode);
void DeleteAllWindowProperties(WindowPtr pWin); void DeleteAllWindowProperties(WindowPtr pWin);

View File

@ -10,7 +10,7 @@
#include "include/screenint.h" #include "include/screenint.h"
#include "include/scrnintstr.h" #include "include/scrnintstr.h"
static void dixFreeScreen(ScreenPtr pScreen) void dixFreeScreen(ScreenPtr pScreen)
{ {
if (!pScreen) if (!pScreen)
return; return;
@ -27,18 +27,3 @@ static void dixFreeScreen(ScreenPtr pScreen)
DeleteCallbackList(&pScreen->hookPixmapDestroy); DeleteCallbackList(&pScreen->hookPixmapDestroy);
free(pScreen); free(pScreen);
} }
void dixFreeAllScreens(void)
{
for (int i = screenInfo.numGPUScreens - 1; i >= 0; i--) {
dixFreeScreen(screenInfo.gpuscreens[i]);
screenInfo.numGPUScreens = i;
}
memset(&screenInfo.numGPUScreens, 0, sizeof(screenInfo.numGPUScreens));
for (int i = screenInfo.numScreens - 1; i >= 0; i--) {
dixFreeScreen(screenInfo.screens[i]);
screenInfo.numScreens = i;
}
memset(&screenInfo.screens, 0, sizeof(screenInfo.numGPUScreens));
}

View File

@ -10,7 +10,7 @@ hdrs_dri3 = [
libxserver_dri3 = [] libxserver_dri3 = []
if build_dri3 if build_dri3
libxserver_dri3 = static_library('libxserver_dri3', libxserver_dri3 = static_library('xserver_dri3',
srcs_dri3, srcs_dri3,
include_directories: inc, include_directories: inc,
dependencies: [ common_dep, libdrm_dep ], dependencies: [ common_dep, libdrm_dep ],

View File

@ -12,7 +12,7 @@ srcs_exa = [
'exa_unaccel.c', 'exa_unaccel.c',
] ]
libxserver_exa = static_library('libxserver_exa', libxserver_exa = static_library('xserver_exa',
srcs_exa, srcs_exa,
include_directories: inc, include_directories: inc,
dependencies: common_dep, dependencies: common_dep,

View File

@ -37,7 +37,7 @@ hdrs_fb = [
'wfbrename.h' 'wfbrename.h'
] ]
libxserver_fb = static_library('libxserver_fb', libxserver_fb = static_library('xserver_fb',
srcs_fb, srcs_fb,
include_directories: inc, include_directories: inc,
dependencies: common_dep, dependencies: common_dep,
@ -46,7 +46,7 @@ libxserver_fb = static_library('libxserver_fb',
wfb_args = '-DFB_ACCESS_WRAPPER' wfb_args = '-DFB_ACCESS_WRAPPER'
libxserver_wfb = static_library('libxserver_wfb', libxserver_wfb = static_library('xserver_wfb',
srcs_fb, srcs_fb,
c_args: wfb_args, c_args: wfb_args,
include_directories: inc, include_directories: inc,

View File

@ -128,13 +128,10 @@ __glXSendReply(ClientPtr client, const void *data, size_t elements,
.retval = retval, .retval = retval,
}; };
/* It is faster on almost always every architecture to just copy the 8 /* Single element goes in reply padding; don't leak uninitialized data. */
* bytes, even when not necessary, than check to see of the value of if (elements == 1) {
* elements requires it. Copying the data when not needed will do no (void) memcpy(&reply.pad3, data, element_size);
* harm. }
*/
(void) memcpy(&reply.pad3, data, 8);
WriteToClient(client, sizeof(xGLXSingleReply), &reply); WriteToClient(client, sizeof(xGLXSingleReply), &reply);
if (reply_ints != 0) { if (reply_ints != 0) {
@ -176,13 +173,10 @@ __glXSendReplySwap(ClientPtr client, const void *data, size_t elements,
.retval = bswap_32(retval), .retval = bswap_32(retval),
}; };
/* It is faster on almost always every architecture to just copy the 8 /* Single element goes in reply padding; don't leak uninitialized data. */
* bytes, even when not necessary, than check to see of the value of if (elements == 1) {
* elements requires it. Copying the data when not needed will do no (void) memcpy(&reply.pad3, data, element_size);
* harm. }
*/
(void) memcpy(&reply.pad3, data, 8);
WriteToClient(client, sizeof(xGLXSingleReply), &reply); WriteToClient(client, sizeof(xGLXSingleReply), &reply);
if (reply_ints != 0) { if (reply_ints != 0) {

View File

@ -32,7 +32,7 @@ srcs_glx = [
libxserver_glx = [] libxserver_glx = []
if build_glx if build_glx
libxserver_glx = static_library('libxserver_glx', libxserver_glx = static_library('xserver_glx',
srcs_glx, srcs_glx,
include_directories: inc, include_directories: inc,
dependencies: [ dependencies: [
@ -68,7 +68,7 @@ hdrs_vnd = [
libglxvnd = [] libglxvnd = []
if build_glx if build_glx
libglxvnd = static_library('libglxvnd', libglxvnd = static_library('glxvnd',
srcs_vnd, srcs_vnd,
include_directories: inc, include_directories: inc,
dependencies: [ dependencies: [

View File

@ -105,7 +105,7 @@ __glGetMap_size(GLenum target, GLenum query)
} }
break; break;
} }
return -1; return 0;
} }
GLint GLint
@ -164,7 +164,7 @@ __glGetPixelMap_size(GLenum map)
query = GL_PIXEL_MAP_A_TO_A_SIZE; query = GL_PIXEL_MAP_A_TO_A_SIZE;
break; break;
default: default:
return -1; return 0;
} }
glGetIntegerv(query, &size); glGetIntegerv(query, &size);
return size; return size;

View File

@ -259,13 +259,6 @@ ddxGiveUp(enum ExitCode error)
} }
} }
#ifdef __APPLE__
void
DarwinHandleGUI(int argc, char *argv[])
{
}
#endif
void void
OsVendorInit(void) OsVendorInit(void)
{ {

View File

@ -39,7 +39,12 @@ _X_EXPORT void xf86MsgVerb(MessageType type, int verb, const char *format, ...)
void void
xf86MsgVerb(MessageType type, int verb, const char *format, ...) xf86MsgVerb(MessageType type, int verb, const char *format, ...)
{ {
static char reportxf86MsgVerb = 1;
if (reportxf86MsgVerb) {
xf86NVidiaBugInternalFunc("xf86MsgVerb()"); xf86NVidiaBugInternalFunc("xf86MsgVerb()");
reportxf86MsgVerb = 0;
}
va_list ap; va_list ap;
va_start(ap, format); va_start(ap, format);

View File

@ -154,13 +154,6 @@ ddxGiveUp(enum ExitCode error)
xnestCloseDisplay(); xnestCloseDisplay();
} }
#ifdef __APPLE__
void
DarwinHandleGUI(int argc, char *argv[])
{
}
#endif
void void
OsVendorInit(void) OsVendorInit(void)
{ {

View File

@ -690,7 +690,6 @@ SNotifyEvent(xAppleWMNotifyEvent *from, xAppleWMNotifyEvent *to)
static int static int
SProcAppleWMQueryVersion(register ClientPtr client) SProcAppleWMQueryVersion(register ClientPtr client)
{ {
REQUEST(xAppleWMQueryVersionReq);
return ProcAppleWMQueryVersion(client); return ProcAppleWMQueryVersion(client);
} }

View File

@ -50,7 +50,7 @@
* needs and simply execs the startup script which then execs the main binary. * needs and simply execs the startup script which then execs the main binary.
*/ */
static char *executable_path() { static char *executable_path(void) {
uint32_t bufsize = PATH_MAX; uint32_t bufsize = PATH_MAX;
char *buf = calloc(1, bufsize); char *buf = calloc(1, bufsize);

View File

@ -394,7 +394,6 @@ SNotifyEvent(xAppleDRINotifyEvent *from,
static int static int
SProcAppleDRIQueryVersion(register ClientPtr client) SProcAppleDRIQueryVersion(register ClientPtr client)
{ {
REQUEST(xAppleDRIQueryVersionReq);
return ProcAppleDRIQueryVersion(client); return ProcAppleDRIQueryVersion(client);
} }

View File

@ -3,10 +3,10 @@ project('xserver', 'c',
'buildtype=debugoptimized', 'buildtype=debugoptimized',
'c_std=gnu99', 'c_std=gnu99',
], ],
version: '25.0.0.2', version: '25.0.0.4',
meson_version: '>= 0.58.0', meson_version: '>= 0.58.0',
) )
release_date = '2025-06-30' release_date = '2025-07-04'
add_project_arguments('-DHAVE_DIX_CONFIG_H', language: ['c', 'objc']) add_project_arguments('-DHAVE_DIX_CONFIG_H', language: ['c', 'objc'])
cc = meson.get_compiler('c') cc = meson.get_compiler('c')
@ -777,7 +777,8 @@ endif
subdir('hw') subdir('hw')
if host_machine.system() != 'windows' build_tests = get_option('tests') and host_machine.system() != 'windows'
if build_tests
subdir('test') subdir('test')
endif endif

View File

@ -110,6 +110,8 @@ option('sha1', type: 'combo', choices: ['libc', 'CommonCrypto', 'CryptoAPI', 'li
description: 'SHA1 implementation') description: 'SHA1 implementation')
option('xf86-input-inputtest', type: 'boolean', value: true, option('xf86-input-inputtest', type: 'boolean', value: true,
description: 'Test input driver support on Xorg') description: 'Test input driver support on Xorg')
option('tests', type: 'boolean', value: true,
description: 'Build tests for the X server on platforms that support it')
option('dri1', type: 'combo', choices: ['true', 'false', 'auto'], value: 'auto', description: 'Build DRI1 extension (default: auto)') option('dri1', type: 'combo', choices: ['true', 'false', 'auto'], value: 'auto', description: 'Build DRI1 extension (default: auto)')
option('dri2', type: 'combo', choices: ['true', 'false', 'auto'], value: 'auto', description: 'Build DRI2 extension (default: auto)') option('dri2', type: 'combo', choices: ['true', 'false', 'auto'], value: 'auto', description: 'Build DRI2 extension (default: auto)')

View File

@ -40,7 +40,7 @@ hdrs_mi = [
'mizerarc.h', 'mizerarc.h',
] ]
libxserver_mi = static_library('libxserver_mi', libxserver_mi = static_library('xserver_mi',
srcs_mi, srcs_mi,
include_directories: inc, include_directories: inc,
dependencies: [ dependencies: [

View File

@ -141,7 +141,7 @@ miPointerInitialize(ScreenPtr pScreen,
pScreenPriv->screenFuncs = screenFuncs; pScreenPriv->screenFuncs = screenFuncs;
pScreenPriv->waitForUpdate = waitForUpdate; pScreenPriv->waitForUpdate = waitForUpdate;
pScreenPriv->showTransparent = FALSE; pScreenPriv->showTransparent = FALSE;
dixScreenHookClose(pScreen, miPointerCloseScreen); dixScreenHookPostClose(pScreen, miPointerCloseScreen);
dixSetPrivate(&pScreen->devPrivates, miPointerScreenKey, pScreenPriv); dixSetPrivate(&pScreen->devPrivates, miPointerScreenKey, pScreenPriv);
/* /*
* set up screen cursor method table * set up screen cursor method table
@ -169,7 +169,7 @@ static void miPointerCloseScreen(CallbackListPtr *pcbl, ScreenPtr pScreen, void
{ {
SetupScreen(pScreen); SetupScreen(pScreen);
dixScreenUnhookClose(pScreen, miPointerCloseScreen); dixScreenUnhookPostClose(pScreen, miPointerCloseScreen);
free((void *) pScreenPriv); free((void *) pScreenPriv);
dixSetPrivate(&pScreen->devPrivates, miPointerScreenKey, NULL); dixSetPrivate(&pScreen->devPrivates, miPointerScreenKey, NULL);
FreeEventList(mipointermove_events, GetMaximumEventsNum()); FreeEventList(mipointermove_events, GetMaximumEventsNum());

View File

@ -7,7 +7,7 @@ hdrs_miext_damage = [
'damagestr.h', 'damagestr.h',
] ]
libxserver_miext_damage = static_library('libxserver_miext_damage', libxserver_miext_damage = static_library('xserver_miext_damage',
srcs_miext_damage, srcs_miext_damage,
include_directories: inc, include_directories: inc,
dependencies: common_dep, dependencies: common_dep,

View File

@ -6,7 +6,7 @@ srcs_miext_rootless = [
'rootlessWindow.c', 'rootlessWindow.c',
] ]
libxserver_miext_rootless = static_library('libxserver_miext_rootless', libxserver_miext_rootless = static_library('xserver_miext_rootless',
srcs_miext_rootless, srcs_miext_rootless,
include_directories: inc, include_directories: inc,
dependencies: common_dep, dependencies: common_dep,

View File

@ -29,7 +29,7 @@ hdrs_miext_shadow = [
'shadow.h', 'shadow.h',
] ]
libxserver_miext_shadow = static_library('libxserver_miext_shadow', libxserver_miext_shadow = static_library('xserver_miext_shadow',
srcs_miext_shadow, srcs_miext_shadow,
include_directories: inc, include_directories: inc,
dependencies: common_dep, dependencies: common_dep,

View File

@ -14,7 +14,7 @@ if build_dri3
srcs_miext_sync += 'misyncshm.c' srcs_miext_sync += 'misyncshm.c'
endif endif
libxserver_miext_sync = static_library('libxserver_miext_sync', libxserver_miext_sync = static_library('xserver_miext_sync',
srcs_miext_sync, srcs_miext_sync,
include_directories: inc, include_directories: inc,
dependencies: [ dependencies: [

View File

@ -79,7 +79,7 @@ endif
libxlibc = [] libxlibc = []
if srcs_libc.length() > 0 if srcs_libc.length() > 0
libxlibc = static_library('libxlibc', libxlibc = static_library('xlibc',
srcs_libc, srcs_libc,
include_directories: inc, include_directories: inc,
dependencies: [ dependencies: [
@ -92,7 +92,7 @@ if enable_input_thread
os_dep += cc.find_library('pthread') os_dep += cc.find_library('pthread')
endif endif
libxserver_os = static_library('libxserver_os', libxserver_os = static_library('xserver_os',
srcs_os, srcs_os,
include_directories: inc, include_directories: inc,
dependencies: [ dependencies: [

View File

@ -15,7 +15,7 @@ hdrs_present = [
'present.h', 'present.h',
] ]
libxserver_present = static_library('libxserver_present', libxserver_present = static_library('xserver_present',
srcs_present, srcs_present,
include_directories: inc, include_directories: inc,
dependencies: [ dependencies: [

View File

@ -1,4 +1,4 @@
libxserver_pseudoramix = static_library('libxserver_pseudoramiX', libxserver_pseudoramix = static_library('xserver_pseudoramiX',
'pseudoramiX.c', 'pseudoramiX.c',
include_directories: inc, include_directories: inc,
dependencies: common_dep, dependencies: common_dep,

View File

@ -25,7 +25,7 @@ if build_xinerama
srcs_randr += 'rrxinerama.c' srcs_randr += 'rrxinerama.c'
endif endif
libxserver_randr = static_library('libxserver_randr', libxserver_randr = static_library('xserver_randr',
srcs_randr, srcs_randr,
include_directories: inc, include_directories: inc,
dependencies: common_dep, dependencies: common_dep,

View File

@ -3,7 +3,7 @@ srcs_record = [
'set.c', 'set.c',
] ]
libxserver_record = static_library('libxserver_record', libxserver_record = static_library('xserver_record',
srcs_record, srcs_record,
include_directories: inc, include_directories: inc,
dependencies: common_dep, dependencies: common_dep,

View File

@ -19,7 +19,7 @@ hdrs_render = [
'picturestr.h', 'picturestr.h',
] ]
libxserver_render = static_library('libxserver_render', libxserver_render = static_library('xserver_render',
srcs_render, srcs_render,
include_directories: inc, include_directories: inc,
dependencies: common_dep, dependencies: common_dep,

View File

@ -7,7 +7,7 @@ srcs_xfixes = [
'xfixes.c', 'xfixes.c',
] ]
libxserver_xfixes = static_library('libxserver_xfixes', libxserver_xfixes = static_library('xserver_xfixes',
srcs_xfixes, srcs_xfixes,
include_directories: inc, include_directories: inc,
dependencies: common_dep, dependencies: common_dep,

View File

@ -23,7 +23,7 @@ srcs_xkb = [
'XKBMAlloc.c', 'XKBMAlloc.c',
] ]
libxserver_xkb = static_library('libxserver_xkb', libxserver_xkb = static_library('xserver_xkb',
srcs_xkb, srcs_xkb,
include_directories: inc, include_directories: inc,
dependencies: common_dep, dependencies: common_dep,
@ -35,7 +35,7 @@ srcs_xkb_stubs = [
'ddxVT.c', 'ddxVT.c',
] ]
libxserver_xkb_stubs = static_library('libxserver_xkb_stubs', libxserver_xkb_stubs = static_library('xserver_xkb_stubs',
srcs_xkb_stubs, srcs_xkb_stubs,
include_directories: inc, include_directories: inc,
dependencies: common_dep, dependencies: common_dep,