aboutsummaryrefslogtreecommitdiff
path: root/nx-X11/programs/Xserver/hw
Commit message (Collapse)AuthorAgeFilesLines
* hw/nxagent/NXdixfonts.c: Fix implicit declaration for register_fpe_functions().Mike Gabriel2016-05-021-0/+2
|
* hw/nxagent/NXdixfonts.c: Don't include <X11/fonts/fontstruct.h>. No symbol ↵Mike Gabriel2016-05-021-1/+0
| | | | needed from that header file.
* hw/nxagent/NXpicture.c: Don't declare anything in empty function ↵Mike Gabriel2016-05-021-6/+0
| | | | | | | | | | | | | | | | nxagentReconnectPictFormat. Amends the following compiler warnings: ``` NXpicture.c: In function ‘nxagentReconnectPictFormat’: NXpicture.c:2148:9: warning: variable ‘pBool’ set but not used [-Wunused-but-set-variable] Bool *pBool; ^ NXpicture.c:2147:17: warning: variable ‘pFormat’ set but not used [-Wunused-but-set-variable] PictFormatPtr pFormat; ^ ```
* hw/nxagent/NXglyphcurs.c: Don't declare and set gcval, if not being used ↵Mike Gabriel2016-05-021-2/+0
| | | | | | | | | | | | | later on. Amends the following compiler warning: ``` NXglyphcurs.c: In function ‘ServerBitsFromGlyph’: NXglyphcurs.c:109:17: warning: variable ‘gcval’ set but not used [-Wunused-but-set-variable] ChangeGCVal gcval[3]; ^ ```
* hw/nxagent/Keyboard.c: The ret variable is only used later on when compiled ↵Mike Gabriel2016-05-021-1/+6
| | | | | | | | | | | | | with -DTEST. Amends the following compiler warning: ``` Keyboard.c: In function ‘nxagentKeyboardProc’: Keyboard.c:688:7: warning: variable ‘ret’ set but not used [-Wunused-but-set-variable] int ret; ^ ```
* hw/nxagent/Handlers.c: Don't declare and assign result variable if not used ↵Mike Gabriel2016-05-021-2/+1
| | | | | | | | | | | | | later on. Amends the following compiler warning: ``` Handlers.c: In function ‘nxagentShadowBlockHandler’: Handlers.c:732:7: warning: variable ‘result’ set but not used [-Wunused-but-set-variable] int result; ^ ```
* hw/nxagent/Keyboard.c: Don't declare and set XkbDescPtr xkb if not used ↵Mike Gabriel2016-05-021-2/+0
| | | | | | | | | | | | | later on. Amends the following compiler warning: ``` Keyboard.c: In function ‘nxagentNotifyKeyboardChanges’: Keyboard.c:1211:16: warning: variable ‘xkb’ set but not used [-Wunused-but-set-variable] XkbDescPtr xkb; ^ ```
* hw/nxagent/*.c: Drop various declarations of unused ScreenPtr pScreen.Mike Gabriel2016-05-024-28/+0
| | | | | These can be dropped after we have turned REGION_* macros into static inline function calls in some of the previous commits.
* hw/nxagent/Screen.c: Cast proper types before handing values over to fprintf().Mike Gabriel2016-05-021-21/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Amends the following compiler warnings: ``` Screen.c: In function ‘nxagentCreateIconWindow’: Screen.c:394:15: warning: format ‘%ld’ expects argument of type ‘long int’, but argument 3 has type ‘Window’ [-Wformat=] nxagentIconWindow); ^ Screen.c: In function ‘nxagentSetScreenSaverTime’: Screen.c:456:19: warning: format ‘%lu’ expects argument of type ‘long unsigned int’, but argument 3 has type ‘CARD32’ [-Wformat=] ScreenSaverTime, ScreenSaverInterval); ^ Screen.c:456:19: warning: format ‘%lu’ expects argument of type ‘long unsigned int’, but argument 4 has type ‘CARD32’ [-Wformat=] Screen.c:476:19: warning: format ‘%lu’ expects argument of type ‘long unsigned int’, but argument 3 has type ‘CARD32’ [-Wformat=] ScreenSaverTime, ScreenSaverInterval); ^ Screen.c:476:19: warning: format ‘%lu’ expects argument of type ‘long unsigned int’, but argument 4 has type ‘CARD32’ [-Wformat=] Screen.c: In function ‘nxagentOpenScreen’: Screen.c:1234:19: warning: format ‘%lu’ expects argument of type ‘long unsigned int’, but argument 3 has type ‘VisualID’ [-Wformat=] visuals[numVisuals].vid); ^ Screen.c:1274:23: warning: format ‘%lu’ expects argument of type ‘long unsigned int’, but argument 3 has type ‘VisualID’ [-Wformat=] depths[depthIndex].depth); ^ Screen.c:1282:17: warning: format ‘%lu’ expects argument of type ‘long unsigned int’, but argument 4 has type ‘VisualID’ [-Wformat=] defaultVisualIndex, visuals[defaultVisualIndex].vid); ^ Screen.c:1319:19: warning: format ‘%ld’ expects argument of type ‘long int’, but argument 6 has type ‘VisualID’ [-Wformat=] rootDepth, defaultVisual); ^ Screen.c:1336:19: warning: format ‘%ld’ expects argument of type ‘long int’, but argument 6 has type ‘VisualID’ [-Wformat=] rootDepth, defaultVisual); ^ Screen.c:1348:19: warning: format ‘%ld’ expects argument of type ‘long int’, but argument 6 has type ‘VisualID’ [-Wformat=] rootDepth, defaultVisual); ^ Screen.c:1357:19: warning: format ‘%ld’ expects argument of type ‘long int’, but argument 6 has type ‘VisualID’ [-Wformat=] rootDepth, defaultVisual); ^ Screen.c:1723:21: warning: format ‘%ld’ expects argument of type ‘long int’, but argument 3 has type ‘Window’ [-Wformat=] nxagentDefaultWindows[pScreen->myNum]); ^ Screen.c:1763:19: warning: format ‘%ld’ expects argument of type ‘long int’, but argument 3 has type ‘Window’ [-Wformat=] nxagentDefaultWindows[pScreen->myNum]); ^ Screen.c:1775:17: warning: format ‘%ld’ expects argument of type ‘long int’, but argument 3 has type ‘Window’ [-Wformat=] nxagentDefaultWindows[pScreen->myNum]); ^ Screen.c:1790:17: warning: format ‘%ld’ expects argument of type ‘long int’, but argument 3 has type ‘Window’ [-Wformat=] nxagentDefaultWindows[pScreen->myNum]); ^ Screen.c: In function ‘nxagentShadowAdaptDepth’: Screen.c:3189:14: warning: format ‘%x’ expects argument of type ‘unsigned int’, but argument 3 has type ‘long unsigned int’ [-Wformat=] pVisual -> red_mask, pVisual -> green_mask, pVisual -> blue_mask); ^ Screen.c:3189:14: warning: format ‘%x’ expects argument of type ‘unsigned int’, but argument 4 has type ‘long unsigned int’ [-Wformat=] Screen.c:3189:14: warning: format ‘%x’ expects argument of type ‘unsigned int’, but argument 5 has type ‘long unsigned int’ [-Wformat=] Screen.c:3198:15: warning: format ‘%x’ expects argument of type ‘unsigned int’, but argument 3 has type ‘long unsigned int’ [-Wformat=] redMask, greenMask, blueMask); ^ Screen.c:3198:15: warning: format ‘%x’ expects argument of type ‘unsigned int’, but argument 4 has type ‘long unsigned int’ [-Wformat=] Screen.c:3198:15: warning: format ‘%x’ expects argument of type ‘unsigned int’, but argument 5 has type ‘long unsigned int’ [-Wformat=] ```
* hw/nxagent/Screen.c: Drop various unused variables.Mike Gabriel2016-05-021-10/+1
| | | | | | | | | | | | | | | | | | | | | | | Amends the following compiler warnings: ``` Screen.c: In function ‘nxagentReconnectScreen’: Screen.c:3547:7: warning: variable ‘flexibility’ set but not used [-Wunused-but-set-variable] int flexibility; ^ Screen.c: In function ‘nxagentAdjustRandRXinerama’: Screen.c:3746:12: warning: unused variable ‘j’ [-Wunused-variable] int i, j; ^ Screen.c: In function ‘nxagentSaveAreas’: Screen.c:4116:15: warning: variable ‘pDrawable’ set but not used [-Wunused-but-set-variable] DrawablePtr pDrawable; ^ Screen.c: In function ‘nxagentRestoreAreas’: Screen.c:4236:15: warning: variable ‘pDrawable’ set but not used [-Wunused-but-set-variable] DrawablePtr pDrawable; ^ ```
* hw/nxagent/Screen.h: Provide prototype for nxagentAdjustRandRXinerama(). ↵Mike Gabriel2016-05-022-0/+3
| | | | | | | | | | | | Avoid implicit-declaration compiler warning. Amends the following compiler warning: ``` Screen.c:3716:5: warning: implicit declaration of function ‘nxagentAdjustRandRXinerama’ [-Wimplicit-function-declaration] nxagentAdjustRandRXinerama(pScreen); ^ ```
* hw/nxagent/Screen.c: Correctly use already defined MIN/MAX macros.Mike Gabriel2016-05-022-4/+4
| | | | | | | | | | | | | | | | | | Use MIN(A,B) macro as defined in Utils.h. Add MAX(A,B) macro in Utils.h, as well. Don't have another set of MIN/MAX macro definitions in Screen.c. Amends the following compiler warnings: ``` Screen.c:3600:0: warning: "MIN" redefined #define MIN(a,b) ((a) < (b)) ? (a) : (b); ^ In file included from Screen.c:78:0: Utils.h:36:0: note: this is the location of the previous definition #define MIN(A, B) ( (A) < (B) ? (A) : (B) ) ^ ```
* hw/nxagent/Window.c: Don't declare "XWindowChanges changes;" and later not ↵Mike Gabriel2016-05-021-4/+0
| | | | | | | | | | | | use it. Amends the following compiler warning: ``` Window.c:2179:24: warning: variable ‘changes’ set but not used [-Wunused-but-set-variable] XWindowChanges changes; ^ ```
* hw/nxagent/Pixmap.c: pBool pointer is only required when compiled in -DTEST ↵Mike Gabriel2016-05-021-1/+1
| | | | | | | | | | | | | mode. Amends the following compiler warning: ``` Pixmap.c: In function ‘nxagentDisconnectPixmap’: Pixmap.c:755:9: warning: variable ‘pBool’ set but not used [-Wunused-but-set-variable] Bool *pBool; ^ ```
* hw/nxagent/Extension.c: Don't declare pRandRScrPriv without using it later on.Mike Gabriel2016-05-021-3/+0
| | | | | | | | | | | | | | | | | | | Amends the following the compiler warnings: ``` Extensions.c: In function ‘nxagentRandRInitSizes’: Extensions.c:159:16: warning: unused variable ‘pRandRScrPriv’ [-Wunused-variable] rrScrPrivPtr pRandRScrPriv = rrGetScrPriv(pScreen); ^ Extensions.c: In function ‘nxagentRandRSetConfig’: Extensions.c:263:16: warning: unused variable ‘pRandRScrPriv’ [-Wunused-variable] rrScrPrivPtr pRandRScrPriv; ^ Extensions.c: In function ‘nxagentRandRScreenSetSize’: Extensions.c:322:16: warning: unused variable ‘pRandRScrPriv’ [-Wunused-variable] rrScrPrivPtr pRandRScrPriv; ^ ```
* hw/nxagent/Rootless.c: Type cast type Atom to type long unsigned int before ↵Mike Gabriel2016-05-021-1/+1
| | | | | | | | | | | | | handing it over to %lu in fprintf(). Amends the following compiler warnings: ``` Rootless.c: In function ‘nxagentExportProperty’: Rootless.c:775:21: warning: format ‘%lu’ expects argument of type ‘long unsigned int’, but argument 3 has type ‘Atom’ [-Wformat=] "Property [%lu] too long.\n", propertyX); ^ ```
* hw/nxagent/Splash.c: Drop unused variable declaration "XPoint m[12];".Mike Gabriel2016-05-021-1/+0
| | | | | | | | | | | Amends the following compiler warning: ``` Splash.c: In function ‘nxagentPaintLogo’: Splash.c:168:13: warning: unused variable ‘m’ [-Wunused-variable] XPoint m[12]; ^ ```
* hw/nxagent/Clipboard.c: The result variable is only needed when combiled ↵Mike Gabriel2016-05-021-4/+12
| | | | | | | | | | | | | with -DDEBUG. Amends the following compiler warning: ``` Clipboard.c: In function ‘nxagentRequestSelection’: Clipboard.c:272:7: warning: variable ‘result’ set but not used [-Wunused-but-set-variable] int result; ^ ```
* hw/nxagent/Drawable.c: RegionNumRects returns int, not long int anymore.Mike Gabriel2016-05-021-1/+1
|
* Change region implementation names to eliminate the 'mi' prefixMike Gabriel2016-05-021-2/+2
| | | | | | | | | | This prepares the file to be moved from mi to dix. This patch was done mechanically with the included scripts 'fix-miregion' run over the entire X server and 'fix-miregion-private' run over include/regionstr.h and mi/miregion.c. v1: Keith Packard <keithp@keithp.com> v2: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> (backported to nx-libs)
* pixman-devel: Build against shared library pkg-config(pixman-1).Mike Gabriel2016-05-021-1/+4
|
* Rename region macros to eliminate screen argumentMike Gabriel2016-05-0218-637/+637
| | | | | | | | | | | | | | | | | | | | | This is a huge mechanical patch and a few small fixups required to finish the job. They were reviewed separately, but because the server does not build without both pieces, I've merged them together at this time. The mechanical changes were performed by running the included 'fix-region' script over the whole nx-X11/programs/Xserver tree: $ cd nx-X11/programs/Xserver && ( git ls-files | grep -v '^fix-' | xargs ./fix-region; ) And then, the white space errors in the resulting patch were fixed using the provided fix-patch-whitespace script. $ sh ./fix-patch-whitespace Thanks to Jamey Sharp for the mighty fine sed-generating sed script. v1: Keith Packard <keithp@keithp.com> (X.Org xserver commit: 2dc138922b7588515d5f2447e4b9dcdc0bef15e0) v2: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> (apply fix-region script to nx-libs)
* NXwindow.c: Don't set w and h, not used later on.Mike Gabriel2016-05-021-4/+0
| | | | | | | | | | | | | | Amends the following compiler warnings: ``` NXwindow.c: In function ‘nxagentClearSplash’: NXwindow.c:342:12: warning: variable ‘h’ set but not used [-Wunused-but-set-variable] int w, h; ^ NXwindow.c:342:9: warning: variable ‘w’ set but not used [-Wunused-but-set-variable] int w, h; ^ ```
* library-cleanup: Don't build libNX_Xrender anymore. Use system's libXrender ↵Mike Gabriel2016-04-203-3/+640
| | | | shared library.
* Fix c4a3889. Add forgotten file nx-X11/programs/Xserver/Xinerama_nxagent.h.Mike Gabriel2016-01-011-0/+74
|
* Complete changes from commit 0d56c45 in NXpicturestr.h (i.e. add a missing ↵Mike DePaulo2015-12-301-0/+6
| | | | | | | comment). (Fixes ArcticaProject/nx-libs#38). commit 0d56c45 was: nx-X11: handle source pictures (those without a Drawable surface) gracefully.
* Xinerama: do not cut off at outer edgesUlrich Sibiller2015-12-302-3/+77
| | | | | | | | | | | | | | | | | | | | | This fixes the problem Mike Gabriel describes like this: - Launch a session on a system with a single monitor. Enable Xinerama for this session. - Open a desktop session in that session window (e.g. MATE or XFCE). - Move the NX/MATE-or-XFCE session window around on that one monitor. Bump at the borders, so that the session window moves into the invisible parts around your monitor. What you see is that the MATE-or-XFCE window manager will become really busy with resizing the windows and panels in the NX session, because moving the window over the physical borders of the display will trigger resize events. This is non-intuitive, I think. Same with multi-monitors on the outside edges of the physical Xorg RandR setup.
* Provide support for re-enabling Xinerama on session resumptions.Mike Gabriel2015-12-303-3/+36
| | | | | | | | | | | | | | By design, when resuming a session, Xinerama can only be re-enabled by NX option parsing. Thus, this change introduces a "xinerama" NX option that can be loaded via an options file into NX agent when resuming a session. The new xinerame NX session option also allows switching on Xinerama at session startup via an option file. When implementing the new NX Xinerama support into clients (like TheQVD, X2Go Client, etc., this new xinerama NX option should be used for activating Xinerama in the NX / QVD / X2Go session.
* Initialize XRandR based Xinerama extension properly when session is started ↵Mike Gabriel2015-12-301-1/+1
| | | | with "-geometry fullscreen".
* Only declare nxagentRandRCrtcSet if RANDR_12_INTERFACE is defined.Mike Gabriel2015-12-301-0/+2
|
* Screen.c: Rename NX_USE_MODE_PREFIX to NXAGENT_RANDR_MODE_PREFIX, fix ↵Mike Gabriel2015-12-302-3/+4
| | | | unclosed comment.
* Screen.c: restructure xinerama code, much shorter nowUlrich Sibiller2015-12-301-64/+40
|
* Screen.c: Fix freeing of unsued modesUlrich Sibiller2015-12-301-9/+28
|
* Screen.c: improve comments and DEBUG outputUlrich Sibiller2015-12-301-24/+59
|
* Reimplement xinerama via randr in nxagent (not libNX_Xinerama). (Fixes ↵Ulrich Sibiller2015-12-305-71/+452
| | | | | | | | | ArcticaProject/nx-libs#23). No more xinerama faking, just use existing xrandr extension and initalize it properly. Xinerama then works automatically. Fixes ArcticaProject/nx-libs#23
* library clean-up: Don't build libNX_Xinerama anymore. Use system's ↵Mike Gabriel2015-12-301-0/+4
| | | | | | | | | | libXinerama shared library. (Fixes ArcticaProject/nx-libs#49). This commit goes along with a patch from Ulrich Sibiller who managed to move the Xinerama awareness for NX sessions into the Xserver code. This makes Xinerama support for NX in libNX_Xinerama.so obsolete. Fixes ArcticaProject/nx-libs#49
* X11/nx-X11 clear-up: More places where we need to explicitly distinguish ↵Mike Gabriel2015-12-292-2/+2
| | | | between X11 and nx-X11 namespace regarding header include paths.
* libray clean (Xfixes): Provide a fake libXfixes.h header from latest X.Org, ↵Mike Gabriel2015-12-284-3/+93
| | | | that includes headers from our Xlib version. This avoids FTBFS caused by type redefinitions and should really be a temporary measure.
* Xrandr_nxagent.h: When faking Xrandr.h, we better include our own Xfuncproto.h.Mike Gabriel2015-12-281-1/+1
|
* Clear header file namespace separation (<X11/...> vs. <nx-X11/...>).Mike Gabriel2015-12-2829-70/+435
| | | | | | | | | | | | | | | | | | | | In the process of building nxagent against more and more system-wide installed X.org libraries, we come to the limit of including structs from this (bundled nx-X11) and that (system-wide X.Org) library. This commit introduces a clear namespace separation of headers provided by nx-X11 and headers provided by X.Org. This approach is only temporary as we want to drop all nx-X11 bundled libraries from nx-libs. However, for a while we need to make this separation clear and also ship some reduced fake X.Org headers that avoid pulling in libX* and libNX_X* symbols at the same time. This patch has been tested on Debian jessie and unstable and requires no overall testing on various distros and distro versions, as we finally will drop all libNX_X* libraries and build against X.org's client libs. For now, this hack eases our development / cleanup process.
* Replace 'pointer' type with 'void *'Keith Packard2015-12-2843-305/+305
| | | | | | | | | | This lets us stop using the 'pointer' typedef in Xdefs.h as 'pointer' is used throughout the X server for other things, and having duplicate names generates compiler warnings. Signed-off-by: Keith Packard <keithp@keithp.com> Reviewed-by: Eric Anholt <eric@anholt.net> Rebased against NX: Mike Gabriel <mike.gabriel@das-netzwerkteam.de>
* Re-add -sync option back to nxagent to allow synchronous debugging of the ↵Mike Gabriel2015-10-063-0/+12
| | | | nxagent DDX.
* Merge branch 'uli42-pr/backported_fixes' into arctica-3.6.xMihai Moldovan2015-07-0310-2/+50
|\ | | | | | | Attributes GH PR #50: https://github.com/ArcticaProject/nx-libs/pull/50
| * Backport: xserver: Avoid sending uninitialized padding data over the networkPeter Åstrand2015-07-0210-2/+50
| | | | | | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* | Correct manpages: --help -> -helpMike DePaulo2015-06-282-2/+2
|/ | | | | | | | | | | | | | | xorg-server does not follow the convention of using 2 dashes. Note that --help does produce the help output. However, it produces this additional output after it: Error: Aborting session with 'Unrecognized option: --help'. Session: Aborting session at 'Sun Jun 28 01:35:35 2015'. Session: Session aborted at 'Sun Jun 28 01:35:35 2015'. It also causes a return code of 1 rather than 0. Therefore, we should instruct users to call -help instead.
* Merge pull request #46 from ArcticaProject/pr/Xext-cve-fixesMike Gabriel2015-05-311-0/+20
|\ | | | | Xext CVE fixes in XVideo extension.
| * Xv: unvalidated lengths in XVideo extension swapped procs [CVE-2014-8099]pr/Xext-cve-fixesAlan Coopersmith2015-05-301-0/+20
| | | | | | | | | | | | | | | | | | | | | | v2: backport to nx-libs 3.6.x (Mike DePaulo) v3: port to NXxvdisp.c rather than xvdisp.c (Mike DePaulo) Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> Conflicts: Xext/xvdisp.c
* | dix: Allow zero-height PutImage requests (fix for X.Org's CVE-2015-3418).pr/dix-cve-fixesKeith Packard2015-05-301-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The length checking code validates PutImage height and byte width by making sure that byte-width >= INT32_MAX / height. If height is zero, this generates a divide by zero exception. Allow zero height requests explicitly, bypassing the INT32_MAX check. Fix for regression introduced by fix for CVE-2014-8092. v2: backports to nx-libs 3.6.x (Mike Gabriel) v3: port to NXdispatch.c rather than dispatch.c (Mike DePaulo) Signed-off-by: Keith Packard <keithp@keithp.com>
* | dix: integer overflow in ProcPutImage() [CVE-2014-8092 1/4]Alan Coopersmith2015-05-301-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ProcPutImage() calculates a length field from a width, left pad and depth specified by the client (if the specified format is XYPixmap). The calculations for the total amount of memory the server needs for the pixmap can overflow a 32-bit number, causing out-of-bounds memory writes on 32-bit systems (since the length is stored in a long int variable). v2: backport to nx-libs 3.6.x (Mike DePaulo) v3: port to NXdispatch.c rather than dispatch.c (Mike DePaulo) Reported-by: Ilja Van Sprundel <ivansprundel@ioactive.com> Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> Conflicts: dix/dispatch.c
* | Avoid use-after-free in dix/dixfonts.c: doImageText() [CVE-2013-4396] from ↵Mike DePaulo2015-05-301-0/+5
|/ | | | | | | | | | | | | | | | | | | | | | | xorg/Xserver http://lists.x.org/archives/xorg-announce/2013-October/002332.html Save a pointer to the passed in closure structure before copying it and overwriting the *c pointer to point to our copy instead of the original. If we hit an error, once we free(c), reset c to point to the original structure before jumping to the cleanup code that references *c. Since one of the errors being checked for is whether the server was able to malloc(c->nChars * itemSize), the client can potentially pass a number of characters chosen to cause the malloc to fail and the error path to be taken, resulting in the read from freed memory. Since the memory is accessed almost immediately afterwards, and the X server is mostly single threaded, the odds of the free memory having invalid contents are low with most malloc implementations when not using memory debugging features, but some allocators will definitely overwrite the memory there, leading to a likely crash. v2: Apply to NXdixfonts.c rather than dixfonts.c (Mike DePaulo)