From 6ba04bd0497ae5dd7aad55a79a4a68fffbd1b6b7 Mon Sep 17 00:00:00 2001 From: keshto Date: Thu, 19 Feb 2026 11:32:20 -0500 Subject: [PATCH 1/3] refactor: modernize function definitions and prototypes - Replace K&R style function definitions with ANSI C prototypes. - Remove INITARGS macro in favor of explicit (void) parameter lists. - Fix -Wold-style-definition and -Wimplicit-int compiler errors. --- Xext/bigreq.c | 2 +- Xext/dpms.c | 2 +- Xext/saver.c | 2 +- Xext/shm.c | 2 +- Xext/sync.c | 2 +- Xext/xcmisc.c | 2 +- Xext/xres.c | 2 +- Xext/xtest.c | 2 +- mi/miinitext.c | 32 ++++++++++++++++---------------- 9 files changed, 24 insertions(+), 24 deletions(-) diff --git a/Xext/bigreq.c b/Xext/bigreq.c index 8059641..91b70f0 100644 --- a/Xext/bigreq.c +++ b/Xext/bigreq.c @@ -50,7 +50,7 @@ static void BigReqResetProc(ExtensionEntry * /* extEntry */ static DISPATCH_PROC(ProcBigReqDispatch); void -BigReqExtensionInit(INITARGS) +BigReqExtensionInit(void) { #if 0 ExtensionEntry *extEntry; diff --git a/Xext/dpms.c b/Xext/dpms.c index b75f482..2705eb5 100644 --- a/Xext/dpms.c +++ b/Xext/dpms.c @@ -91,7 +91,7 @@ static DISPATCH_PROC(SProcDPMSCapable); static void DPMSResetProc(ExtensionEntry * extEntry); void -DPMSExtensionInit(INITARGS) +DPMSExtensionInit(void) { #if 0 ExtensionEntry *extEntry; diff --git a/Xext/saver.c b/Xext/saver.c index 0ba9928..399fb01 100644 --- a/Xext/saver.c +++ b/Xext/saver.c @@ -239,7 +239,7 @@ static int ScreenPrivateIndex; ****************/ void -ScreenSaverExtensionInit(INITARGS) +ScreenSaverExtensionInit(void) { ExtensionEntry *extEntry; diff --git a/Xext/shm.c b/Xext/shm.c index 957fcf3..4e7b2c4 100644 --- a/Xext/shm.c +++ b/Xext/shm.c @@ -208,7 +208,7 @@ CheckForShmSyscall() #endif void -ShmExtensionInit(INITARGS) +ShmExtensionInit(void) { ExtensionEntry *extEntry; diff --git a/Xext/sync.c b/Xext/sync.c index 460cc5e..f8b6b6e 100644 --- a/Xext/sync.c +++ b/Xext/sync.c @@ -2296,7 +2296,7 @@ ExtensionEntry *extEntry; * ** Initialise the extension. */ void -SyncExtensionInit(INITARGS) +SyncExtensionInit(void) { ExtensionEntry *extEntry; diff --git a/Xext/xcmisc.c b/Xext/xcmisc.c index d8bfc81..2f11ab5 100644 --- a/Xext/xcmisc.c +++ b/Xext/xcmisc.c @@ -64,7 +64,7 @@ static DISPATCH_PROC(SProcXCMiscGetXIDList); static DISPATCH_PROC(SProcXCMiscGetXIDRange); void -XCMiscExtensionInit(INITARGS) +XCMiscExtensionInit(void) { #if 0 ExtensionEntry *extEntry; diff --git a/Xext/xres.c b/Xext/xres.c index 39ba82e..12c12a4 100644 --- a/Xext/xres.c +++ b/Xext/xres.c @@ -373,7 +373,7 @@ SProcResDispatch(ClientPtr client) } void -ResExtensionInit(INITARGS) +ResExtensionInit(void) { (void) AddExtension(XRES_NAME, 0, 0, ProcResDispatch, SProcResDispatch, diff --git a/Xext/xtest.c b/Xext/xtest.c index e0f2bdc..1856560 100644 --- a/Xext/xtest.c +++ b/Xext/xtest.c @@ -80,7 +80,7 @@ static DISPATCH_PROC(SProcXTestGetVersion); static DISPATCH_PROC(SProcXTestGrabControl); void -XTestExtensionInit(INITARGS) +XTestExtensionInit(void) { #if 0 ExtensionEntry *extEntry; diff --git a/mi/miinitext.c b/mi/miinitext.c index 5edb683..83ed4c0 100644 --- a/mi/miinitext.c +++ b/mi/miinitext.c @@ -85,8 +85,8 @@ extern Bool noXFree86BigfontExtension; #endif extern Bool noXFixesExtension; -#define INITARGS void -typedef void (*InitExtension)(INITARGS); +#define void void +typedef void (*InitExtension)(void); #define _XSHM_SERVER_ #include @@ -100,30 +100,30 @@ typedef void (*InitExtension)(INITARGS); #endif /* FIXME: this whole block of externs should be from the appropriate headers */ -extern void ShmExtensionInit(INITARGS); -extern void XTestExtensionInit(INITARGS); -extern void BigReqExtensionInit(INITARGS); +extern void ShmExtensionInit(void); +extern void XTestExtensionInit(void); +extern void BigReqExtensionInit(void); #ifdef SCREENSAVER -extern void ScreenSaverExtensionInit (INITARGS); +extern void ScreenSaverExtensionInit (void); #endif -extern void SyncExtensionInit(INITARGS); -extern void XCMiscExtensionInit(INITARGS); +extern void SyncExtensionInit(void); +extern void XCMiscExtensionInit(void); #ifdef DBE -extern void DbeExtensionInit(INITARGS); +extern void DbeExtensionInit(void); #endif #ifdef XF86BIGFONT -extern void XFree86BigfontExtensionInit(INITARGS); +extern void XFree86BigfontExtensionInit(void); #endif #ifdef DPMSExtension -extern void DPMSExtensionInit(INITARGS); +extern void DPMSExtensionInit(void); #endif -extern void RenderExtensionInit(INITARGS); -extern void RRExtensionInit(INITARGS); +extern void RenderExtensionInit(void); +extern void RRExtensionInit(void); #ifdef RES -extern void ResExtensionInit(INITARGS); +extern void ResExtensionInit(void); #endif -extern void XFixesExtensionInit(INITARGS); -extern void DamageExtensionInit(INITARGS); +extern void XFixesExtensionInit(void); +extern void DamageExtensionInit(void); /* The following is only a small first step towards run-time * configurable extensions. From 4b37bd40a0c6043f153b42bc698baa8c41f0c6a5 Mon Sep 17 00:00:00 2001 From: keshto Date: Thu, 19 Feb 2026 11:33:24 -0500 Subject: [PATCH 2/3] dbe: Fix "too many arguments" error in DbeInitFunct --- dbe/dbe.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dbe/dbe.c b/dbe/dbe.c index 2e945be..7eae3da 100644 --- a/dbe/dbe.c +++ b/dbe/dbe.c @@ -52,7 +52,7 @@ /* GLOBALS */ /* Per-screen initialization functions [init'ed by DbeRegisterFunction()] */ -static Bool (*DbeInitFunct[MAXSCREENS]) (); /* pScreen, pDbeScreenPriv */ +static Bool (*DbeInitFunct[MAXSCREENS]) (ScreenPtr, DbeScreenPrivPtr); /* These are static globals copied to DBE's screen private for use by DDX */ static int dbeScreenPrivIndex; @@ -116,7 +116,7 @@ DbeValidateBuffer(WindowPtr pWin, XID drawID, Bool dstbuf) *****************************************************************************/ void -DbeRegisterFunction(ScreenPtr pScreen, Bool (*funct) ( /* ??? */ )) +DbeRegisterFunction(ScreenPtr pScreen, Bool (*funct) (ScreenPtr, DbeScreenPrivPtr)) { int i; From 6ef5b7911436a2fde0d1931e50c3479fdd7385fd Mon Sep 17 00:00:00 2001 From: keshto Date: Thu, 19 Feb 2026 11:33:44 -0500 Subject: [PATCH 3/3] Migrate font subsystem to libXfont2 Update the project to support libXfont2 by implementing the new handshake initialization, updating build dependencies, and providing macro mappings for legacy font API symbols to their modern xfont2_ counterparts. --- configure.ac | 2 +- dix/dixfonts.c | 147 +++++++++++++++++++++++++++++++++++++++++++--- include/dixfont.h | 33 ++++++----- 3 files changed, 158 insertions(+), 24 deletions(-) diff --git a/configure.ac b/configure.ac index a30d074..47fbb96 100644 --- a/configure.ac +++ b/configure.ac @@ -321,7 +321,7 @@ XEXTXORG_LIB='$(top_builddir)/Xext/libXextbuiltin.la' dnl Core modules for most extensions, et al. REQUIRED_MODULES="[randrproto >= 1.2] renderproto [fixesproto >= 4.0] [damageproto >= 1.1] xcmiscproto xextproto xproto xtrans xf86bigfontproto [scrnsaverproto >= 1.1] bigreqsproto resourceproto fontsproto inputproto [kbproto >= 1.0.3]" -REQUIRED_LIBS="xfont fontenc" +REQUIRED_LIBS="xfont2 fontenc" AM_CONDITIONAL(SCREENSAVER, [test "x$SCREENSAVER" = xyes]) if test "x$SCREENSAVER" = xyes; then diff --git a/dix/dixfonts.c b/dix/dixfonts.c index 667ff21..a86aab8 100644 --- a/dix/dixfonts.c +++ b/dix/dixfonts.c @@ -92,7 +92,7 @@ static int size_slept_fpes = 0; static FontPathElementPtr *slept_fpes = (FontPathElementPtr *) 0; -static FontPatternCachePtr patternCache; +static xfont2_pattern_cache_ptr patternCache; _X_EXPORT int FontToXError(err) @@ -1853,17 +1853,150 @@ DeleteClientFontStuff(ClientPtr client) } } +static int +xfont2_client_auth_generation(ClientPtr client) +{ + return 0; +} + +static Bool +xfont2_client_signal(ClientPtr client) +{ + return ClientSignal(client); +} + +static void +xfont2_verrorf(const char *f, va_list ap) +{ + VErrorF(f, ap); +} + +static int +xfont2_init_fs_handlers(FontPathElementPtr fpe, FontBlockHandlerProcPtr block_handler) +{ + return init_fs_handlers(fpe, (BlockHandlerProcPtr) block_handler); +} + +static int +xfont2_register_fpe_funcs(const xfont2_fpe_funcs_rec *funcs) +{ + return RegisterFPEFunctions(funcs->name_check, + funcs->init_fpe, + funcs->free_fpe, + funcs->reset_fpe, + funcs->open_font, + funcs->close_font, + funcs->list_fonts, + funcs->start_list_fonts_with_info, + funcs->list_next_font_with_info, + (WakeupFpeFunc) funcs->wakeup_fpe, + funcs->client_died, + funcs->load_glyphs, + funcs->start_list_fonts_and_aliases, + funcs->list_next_font_or_alias, + funcs->set_path_hook); +} + +static void +xfont2_remove_fs_handlers(FontPathElementPtr fpe, FontBlockHandlerProcPtr block_handler, Bool all) +{ + remove_fs_handlers(fpe, (BlockHandlerProcPtr) block_handler, all); +} + +static void * +xfont2_get_server_client(void) +{ + return serverClient; +} + +static Atom +xfont2_make_atom(const char *string, unsigned len, int makeit) +{ + return MakeAtom((char *) string, len, (Bool) makeit); +} + +static const char * +xfont2_name_for_atom(Atom atom) +{ + return NameForAtom(atom); +} + +static unsigned long +xfont2_get_server_generation(void) +{ + return serverGeneration; +} + +static int +xfont2_add_fs_fd(int fd, FontFdHandlerProcPtr handler, void *data) +{ + AddEnabledDevice(fd); + return 0; +} + +static void +xfont2_remove_fs_fd(int fd) +{ + RemoveEnabledDevice(fd); +} + +static void +xfont2_adjust_fs_wait_for_delay(void *wt, unsigned long newdelay) +{ + AdjustWaitForDelay(wt, newdelay); +} + +static FontPtr +xfont2_find_old_font(FSID id) +{ + return find_old_font((XID) id); +} + +void +GetGlyphs(FontPtr font, unsigned long count, unsigned char *chars, + FontEncoding fontEncoding, unsigned long *glyphcount, + CharInfoPtr * glyphs) +{ + (*font->get_glyphs) (font, count, chars, fontEncoding, glyphcount, glyphs); +} + +void +ResetFontPrivateIndex(void) +{ +} + +static const xfont2_client_funcs_rec xfont2_client_funcs = { + .version = XFONT2_CLIENT_FUNCS_VERSION, + .client_auth_generation = xfont2_client_auth_generation, + .client_signal = xfont2_client_signal, + .delete_font_client_id = DeleteFontClientID, + .verrorf = xfont2_verrorf, + .find_old_font = xfont2_find_old_font, + .get_client_resolutions = GetClientResolutions, + .get_default_point_size = GetDefaultPointSize, + .get_new_font_client_id = GetNewFontClientID, + .get_time_in_millis = GetTimeInMillis, + .init_fs_handlers = xfont2_init_fs_handlers, + .register_fpe_funcs = xfont2_register_fpe_funcs, + .remove_fs_handlers = xfont2_remove_fs_handlers, + .get_server_client = xfont2_get_server_client, + .set_font_authorizations = set_font_authorizations, + .store_font_client_font = StoreFontClientFont, + .make_atom = xfont2_make_atom, + .valid_atom = ValidAtom, + .name_for_atom = xfont2_name_for_atom, + .get_server_generation = xfont2_get_server_generation, + .add_fs_fd = xfont2_add_fs_fd, + .remove_fs_fd = xfont2_remove_fs_fd, + .adjust_fs_wait_for_delay = xfont2_adjust_fs_wait_for_delay, +}; + void InitFonts() { patternCache = MakeFontPatternCache(); - { -#ifdef KDRIVESERVER - BuiltinRegisterFpeFunctions(); -#endif - FontFileRegisterFpeFunctions(); - } + xfont2_init(&xfont2_client_funcs); } _X_EXPORT XFONT_LTO diff --git a/include/dixfont.h b/include/dixfont.h index 2ce672f..8ad8e30 100644 --- a/include/dixfont.h +++ b/include/dixfont.h @@ -28,6 +28,23 @@ SOFTWARE. #include #include "closure.h" #include +#include + +#define QueryGlyphExtents xfont2_query_glyph_extents +#define QueryTextExtents xfont2_query_text_extents +#define ParseGlyphCachingMode xfont2_parse_glyph_caching_mode +#define InitGlyphCaching xfont2_init_glyph_caching +#define MakeFontPatternCache xfont2_make_font_pattern_cache +#define FreeFontPatternCache xfont2_free_font_pattern_cache +#define EmptyFontPatternCache xfont2_empty_font_pattern_cache +#define CacheFontPattern xfont2_cache_font_pattern +#define FindCachedFontPattern xfont2_find_cached_font_pattern +#define RemoveCachedFontPattern xfont2_remove_cached_font_pattern +#define MakeFontNamesRecord xfont2_make_font_names_record +#define FreeFontNames xfont2_free_font_names +#define AddFontNamesName xfont2_add_font_names_name +#define AllocateFontPrivateIndex xfont2_allocate_font_private_index +#define _FontSetNewPrivate xfont2_font_set_private #define NullDIXFontProp ((DIXFontPropPtr)0) @@ -131,20 +148,4 @@ void GetGlyphs(FontPtr /*font*/, unsigned long * /*glyphcount*/, CharInfoPtr * /*glyphs*/); -void QueryGlyphExtents(FontPtr /*pFont*/, - CharInfoPtr * /*charinfo*/, - unsigned long /*count*/, - ExtentInfoPtr /*info*/); - -Bool QueryTextExtents(FontPtr /*pFont*/, - unsigned long /*count*/, - unsigned char * /*chars*/, - ExtentInfoPtr /*info*/); - -Bool ParseGlyphCachingMode(char * /*str*/); - -void InitGlyphCaching(void); - -void SetGlyphCachingMode(int /*newmode*/); - #endif /* DIXFONT_H */