xfree86: compat: re-add xf86Msg() for badly maintained drivers.

NVidia yet again lagging behind a year with trivial cleanups,
even though they're informed about this function being deprecated
and dropped.

It spills out a log warning calling users to file bug reports their
driver vendor.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
This commit is contained in:
Enrico Weigelt, metux IT consult 2025-06-02 10:44:12 +02:00
parent d674029f1f
commit c8a776f662
4 changed files with 39 additions and 0 deletions

1
hw/xfree86/compat/README Normal file
View File

@ -0,0 +1 @@
special compat code for legacy drivers, namely Nvidia proprietary

28
hw/xfree86/compat/log.c Normal file
View File

@ -0,0 +1,28 @@
#include <dix-config.h>
#include <X11/Xfuncproto.h>
#include "include/os.h"
#undef xf86Msg
/*
* this is specifically for NVidia proprietary driver: they're again lagging
* behind a year, doing at least some minimal cleanup of their code base.
* All attempts to get in direct contact with them have failed.
*/
_X_EXPORT void xf86Msg(MessageType type, const char *format, ...)
_X_ATTRIBUTE_PRINTF(2, 3);
void xf86Msg(MessageType type, const char *format, ...)
{
LogMessageVerb(X_WARNING, 0, "Outdated driver still using xf86Msg() !\n");
LogMessageVerb(X_WARNING, 0, "File a bug report to driver vendor or use a FOSS driver.\n");
LogMessageVerb(X_WARNING, 0, "Proprietary drivers are inherently unstable, they just can't be done right.\n");
va_list ap;
va_start(ap, format);
LogVMessageVerb(type, 1, format, ap);
va_end(ap);
}

View File

@ -0,0 +1,8 @@
srcs_xorg_compat = [
'log.c',
]
xorg_compat = static_library('xorg_compat',
srcs_xorg_compat,
include_directories: [inc, xorg_inc, top_dir_inc],
)

View File

@ -24,6 +24,7 @@ endif
# subdirs for convenience libraries statically linked into Xorg # subdirs for convenience libraries statically linked into Xorg
subdir('common') subdir('common')
subdir('compat')
subdir('ddc') subdir('ddc')
if build_dri1 if build_dri1
subdir('dri') subdir('dri')
@ -53,6 +54,7 @@ xorg_link = [
libxserver, libxserver,
libglxvnd, libglxvnd,
xorg_common, xorg_common,
xorg_compat,
xorg_loader, xorg_loader,
xorg_ddc, xorg_ddc,
xorg_xkb, xorg_xkb,