From f4092abdf94af6a99aff944d6264bc1284e8bdd4 Mon Sep 17 00:00:00 2001 From: Reinhard Tartler Date: Mon, 10 Oct 2011 17:43:39 +0200 Subject: Imported nx-X11-3.1.0-1.tar.gz Summary: Imported nx-X11-3.1.0-1.tar.gz Keywords: Imported nx-X11-3.1.0-1.tar.gz into Git repository --- nx-X11/programs/Xserver/hw/dmx/Imakefile | 125 + nx-X11/programs/Xserver/hw/dmx/Xdmx.man | 741 ++++ nx-X11/programs/Xserver/hw/dmx/config/Canvas.c | 160 + nx-X11/programs/Xserver/hw/dmx/config/Canvas.h | 56 + nx-X11/programs/Xserver/hw/dmx/config/CanvasP.h | 66 + nx-X11/programs/Xserver/hw/dmx/config/Imakefile | 101 + nx-X11/programs/Xserver/hw/dmx/config/TODO | 7 + nx-X11/programs/Xserver/hw/dmx/config/dmxcompat.c | 237 ++ nx-X11/programs/Xserver/hw/dmx/config/dmxcompat.h | 45 + nx-X11/programs/Xserver/hw/dmx/config/dmxconfig.c | 499 +++ nx-X11/programs/Xserver/hw/dmx/config/dmxconfig.h | 65 + nx-X11/programs/Xserver/hw/dmx/config/dmxparse.c | 611 ++++ nx-X11/programs/Xserver/hw/dmx/config/dmxparse.h | 298 ++ nx-X11/programs/Xserver/hw/dmx/config/dmxprint.c | 456 +++ nx-X11/programs/Xserver/hw/dmx/config/dmxprint.h | 44 + nx-X11/programs/Xserver/hw/dmx/config/dmxtodmx.c | 50 + nx-X11/programs/Xserver/hw/dmx/config/dmxtodmx.man | 41 + nx-X11/programs/Xserver/hw/dmx/config/parser.y | 226 ++ nx-X11/programs/Xserver/hw/dmx/config/scanner.l | 183 + nx-X11/programs/Xserver/hw/dmx/config/test-a.in | 1 + nx-X11/programs/Xserver/hw/dmx/config/test-a.out | 2 + nx-X11/programs/Xserver/hw/dmx/config/test-b.in | 1 + nx-X11/programs/Xserver/hw/dmx/config/test-b.out | 1 + nx-X11/programs/Xserver/hw/dmx/config/test-c.in | 1 + nx-X11/programs/Xserver/hw/dmx/config/test-c.out | 2 + nx-X11/programs/Xserver/hw/dmx/config/test-d.in | 1 + nx-X11/programs/Xserver/hw/dmx/config/test-d.out | 2 + nx-X11/programs/Xserver/hw/dmx/config/test-e.in | 1 + nx-X11/programs/Xserver/hw/dmx/config/test-e.out | 2 + nx-X11/programs/Xserver/hw/dmx/config/test-f.in | 2 + nx-X11/programs/Xserver/hw/dmx/config/test-f.out | Bin 0 -> 69 bytes nx-X11/programs/Xserver/hw/dmx/config/test-g.in | 4 + nx-X11/programs/Xserver/hw/dmx/config/test-g.out | 4 + nx-X11/programs/Xserver/hw/dmx/config/test-h.in | 7 + nx-X11/programs/Xserver/hw/dmx/config/test-h.out | 7 + nx-X11/programs/Xserver/hw/dmx/config/test-i.in | 3 + nx-X11/programs/Xserver/hw/dmx/config/test-i.out | 3 + nx-X11/programs/Xserver/hw/dmx/config/test-j.in | 13 + nx-X11/programs/Xserver/hw/dmx/config/test-j.out | 11 + nx-X11/programs/Xserver/hw/dmx/config/test-k.in | 3 + nx-X11/programs/Xserver/hw/dmx/config/test-k.out | 3 + nx-X11/programs/Xserver/hw/dmx/config/test-l.in | 12 + nx-X11/programs/Xserver/hw/dmx/config/test-l.out | 12 + nx-X11/programs/Xserver/hw/dmx/config/vdltodmx.c | 58 + nx-X11/programs/Xserver/hw/dmx/config/vdltodmx.man | 95 + nx-X11/programs/Xserver/hw/dmx/config/xdmxconfig.c | 1192 +++++++ .../programs/Xserver/hw/dmx/config/xdmxconfig.man | 63 + nx-X11/programs/Xserver/hw/dmx/dmx.h | 374 ++ nx-X11/programs/Xserver/hw/dmx/dmx_glxvisuals.c | 606 ++++ nx-X11/programs/Xserver/hw/dmx/dmx_glxvisuals.h | 64 + nx-X11/programs/Xserver/hw/dmx/dmxcb.c | 224 ++ nx-X11/programs/Xserver/hw/dmx/dmxcb.h | 54 + nx-X11/programs/Xserver/hw/dmx/dmxclient.h | 152 + nx-X11/programs/Xserver/hw/dmx/dmxcmap.c | 220 ++ nx-X11/programs/Xserver/hw/dmx/dmxcmap.h | 71 + nx-X11/programs/Xserver/hw/dmx/dmxcursor.c | 926 +++++ nx-X11/programs/Xserver/hw/dmx/dmxcursor.h | 70 + nx-X11/programs/Xserver/hw/dmx/dmxdpms.c | 213 ++ nx-X11/programs/Xserver/hw/dmx/dmxdpms.h | 43 + nx-X11/programs/Xserver/hw/dmx/dmxextension.c | 1497 ++++++++ nx-X11/programs/Xserver/hw/dmx/dmxextension.h | 119 + nx-X11/programs/Xserver/hw/dmx/dmxfont.c | 559 +++ nx-X11/programs/Xserver/hw/dmx/dmxfont.h | 60 + nx-X11/programs/Xserver/hw/dmx/dmxgc.c | 424 +++ nx-X11/programs/Xserver/hw/dmx/dmxgc.h | 90 + nx-X11/programs/Xserver/hw/dmx/dmxgcops.c | 602 ++++ nx-X11/programs/Xserver/hw/dmx/dmxgcops.h | 96 + nx-X11/programs/Xserver/hw/dmx/dmxinit.c | 1062 ++++++ nx-X11/programs/Xserver/hw/dmx/dmxinit.h | 51 + nx-X11/programs/Xserver/hw/dmx/dmxinput.c | 105 + nx-X11/programs/Xserver/hw/dmx/dmxinput.h | 163 + nx-X11/programs/Xserver/hw/dmx/dmxlog.c | 351 ++ nx-X11/programs/Xserver/hw/dmx/dmxlog.h | 79 + nx-X11/programs/Xserver/hw/dmx/dmxpict.c | 1298 +++++++ nx-X11/programs/Xserver/hw/dmx/dmxpict.h | 133 + nx-X11/programs/Xserver/hw/dmx/dmxpixmap.c | 252 ++ nx-X11/programs/Xserver/hw/dmx/dmxpixmap.h | 67 + nx-X11/programs/Xserver/hw/dmx/dmxprop.c | 348 ++ nx-X11/programs/Xserver/hw/dmx/dmxprop.h | 47 + nx-X11/programs/Xserver/hw/dmx/dmxscrinit.c | 566 +++ nx-X11/programs/Xserver/hw/dmx/dmxscrinit.h | 52 + nx-X11/programs/Xserver/hw/dmx/dmxshadow.c | 72 + nx-X11/programs/Xserver/hw/dmx/dmxshadow.h | 47 + nx-X11/programs/Xserver/hw/dmx/dmxstat.c | 223 ++ nx-X11/programs/Xserver/hw/dmx/dmxstat.h | 56 + nx-X11/programs/Xserver/hw/dmx/dmxsync.c | 194 ++ nx-X11/programs/Xserver/hw/dmx/dmxsync.h | 44 + nx-X11/programs/Xserver/hw/dmx/dmxvisual.c | 141 + nx-X11/programs/Xserver/hw/dmx/dmxvisual.h | 48 + nx-X11/programs/Xserver/hw/dmx/dmxwindow.c | 1085 ++++++ nx-X11/programs/Xserver/hw/dmx/dmxwindow.h | 149 + nx-X11/programs/Xserver/hw/dmx/doc/DMXSpec-v1.txt | 458 +++ nx-X11/programs/Xserver/hw/dmx/doc/DMXSpec.txt | 875 +++++ nx-X11/programs/Xserver/hw/dmx/doc/Imakefile | 10 + nx-X11/programs/Xserver/hw/dmx/doc/Makefile.linux | 42 + nx-X11/programs/Xserver/hw/dmx/doc/dmx.sgml | 2778 +++++++++++++++ nx-X11/programs/Xserver/hw/dmx/doc/dmx.txt | 2989 ++++++++++++++++ nx-X11/programs/Xserver/hw/dmx/doc/doxygen.conf | 1090 ++++++ nx-X11/programs/Xserver/hw/dmx/doc/doxygen.css | 49 + nx-X11/programs/Xserver/hw/dmx/doc/doxygen.foot | 12 + nx-X11/programs/Xserver/hw/dmx/doc/doxygen.head | 8 + .../Xserver/hw/dmx/doc/html/ChkNotMaskEv_8c.html | 76 + .../hw/dmx/doc/html/ChkNotMaskEv_8h-source.html | 60 + .../Xserver/hw/dmx/doc/html/ChkNotMaskEv_8h.html | 77 + .../Xserver/hw/dmx/doc/html/annotated.html | 98 + .../programs/Xserver/hw/dmx/doc/html/classes.html | 26 + .../Xserver/hw/dmx/doc/html/dmx_8h-source.html | 276 ++ .../programs/Xserver/hw/dmx/doc/html/dmx_8h.html | 532 +++ .../hw/dmx/doc/html/dmx__glxvisuals_8h-source.html | 85 + .../Xserver/hw/dmx/doc/html/dmxarg_8c.html | 239 ++ .../Xserver/hw/dmx/doc/html/dmxarg_8h-source.html | 69 + .../Xserver/hw/dmx/doc/html/dmxarg_8h.html | 235 ++ .../Xserver/hw/dmx/doc/html/dmxbackend_8c.html | 427 +++ .../hw/dmx/doc/html/dmxbackend_8h-source.html | 75 + .../Xserver/hw/dmx/doc/html/dmxbackend_8h.html | 411 +++ .../programs/Xserver/hw/dmx/doc/html/dmxcb_8c.html | 184 + .../Xserver/hw/dmx/doc/html/dmxcb_8h-source.html | 70 + .../programs/Xserver/hw/dmx/doc/html/dmxcb_8h.html | 209 ++ .../hw/dmx/doc/html/dmxclient_8h-source.html | 168 + .../Xserver/hw/dmx/doc/html/dmxclient_8h.html | 48 + .../Xserver/hw/dmx/doc/html/dmxcmap_8c.html | 265 ++ .../Xserver/hw/dmx/doc/html/dmxcmap_8h-source.html | 86 + .../Xserver/hw/dmx/doc/html/dmxcmap_8h.html | 408 +++ .../Xserver/hw/dmx/doc/html/dmxcommon_8c.html | 701 ++++ .../hw/dmx/doc/html/dmxcommon_8h-source.html | 151 + .../Xserver/hw/dmx/doc/html/dmxcommon_8h.html | 665 ++++ .../Xserver/hw/dmx/doc/html/dmxcompat_8c.html | 68 + .../hw/dmx/doc/html/dmxcompat_8h-source.html | 61 + .../Xserver/hw/dmx/doc/html/dmxcompat_8h.html | 62 + .../Xserver/hw/dmx/doc/html/dmxconfig_8c.html | 402 +++ .../hw/dmx/doc/html/dmxconfig_8h-source.html | 84 + .../Xserver/hw/dmx/doc/html/dmxconfig_8h.html | 248 ++ .../Xserver/hw/dmx/doc/html/dmxconsole_8c.html | 498 +++ .../hw/dmx/doc/html/dmxconsole_8h-source.html | 79 + .../Xserver/hw/dmx/doc/html/dmxconsole_8h.html | 488 +++ .../Xserver/hw/dmx/doc/html/dmxcursor_8c.html | 471 +++ .../hw/dmx/doc/html/dmxcursor_8h-source.html | 86 + .../Xserver/hw/dmx/doc/html/dmxcursor_8h.html | 498 +++ .../Xserver/hw/dmx/doc/html/dmxdetach_8c.html | 70 + .../Xserver/hw/dmx/doc/html/dmxdpms_8c.html | 128 + .../Xserver/hw/dmx/doc/html/dmxdpms_8h-source.html | 62 + .../Xserver/hw/dmx/doc/html/dmxdpms_8h.html | 124 + .../Xserver/hw/dmx/doc/html/dmxdummy_8c.html | 111 + .../hw/dmx/doc/html/dmxdummy_8h-source.html | 63 + .../Xserver/hw/dmx/doc/html/dmxdummy_8h.html | 111 + .../programs/Xserver/hw/dmx/doc/html/dmxeq_8c.html | 269 ++ .../Xserver/hw/dmx/doc/html/dmxeq_8h-source.html | 61 + .../programs/Xserver/hw/dmx/doc/html/dmxeq_8h.html | 63 + .../Xserver/hw/dmx/doc/html/dmxevents_8c.html | 284 ++ .../hw/dmx/doc/html/dmxevents_8h-source.html | 66 + .../Xserver/hw/dmx/doc/html/dmxevents_8h.html | 233 ++ .../Xserver/hw/dmx/doc/html/dmxext_8h-source.html | 197 ++ .../Xserver/hw/dmx/doc/html/dmxext_8h.html | 926 +++++ .../Xserver/hw/dmx/doc/html/dmxextension_8c.html | 433 +++ .../hw/dmx/doc/html/dmxextension_8h-source.html | 131 + .../Xserver/hw/dmx/doc/html/dmxextension_8h.html | 426 +++ .../Xserver/hw/dmx/doc/html/dmxfont_8c.html | 257 ++ .../Xserver/hw/dmx/doc/html/dmxfont_8h-source.html | 78 + .../Xserver/hw/dmx/doc/html/dmxfont_8h.html | 333 ++ .../programs/Xserver/hw/dmx/doc/html/dmxgc_8c.html | 456 +++ .../Xserver/hw/dmx/doc/html/dmxgc_8h-source.html | 106 + .../programs/Xserver/hw/dmx/doc/html/dmxgc_8h.html | 561 +++ .../Xserver/hw/dmx/doc/html/dmxgcops_8c.html | 1476 ++++++++ .../hw/dmx/doc/html/dmxgcops_8h-source.html | 115 + .../Xserver/hw/dmx/doc/html/dmxgcops_8h.html | 1469 ++++++++ .../Xserver/hw/dmx/doc/html/dmxinit_8c.html | 709 ++++ .../Xserver/hw/dmx/doc/html/dmxinit_8h-source.html | 70 + .../Xserver/hw/dmx/doc/html/dmxinit_8h.html | 30 + .../Xserver/hw/dmx/doc/html/dmxinput_8c.html | 185 + .../hw/dmx/doc/html/dmxinput_8h-source.html | 146 + .../Xserver/hw/dmx/doc/html/dmxinput_8h.html | 534 +++ .../Xserver/hw/dmx/doc/html/dmxinputinit_8c.html | 477 +++ .../hw/dmx/doc/html/dmxinputinit_8h-source.html | 259 ++ .../Xserver/hw/dmx/doc/html/dmxinputinit_8h.html | 406 +++ .../Xserver/hw/dmx/doc/html/dmxlog_8c.html | 602 ++++ .../Xserver/hw/dmx/doc/html/dmxlog_8h-source.html | 91 + .../Xserver/hw/dmx/doc/html/dmxlog_8h.html | 616 ++++ .../Xserver/hw/dmx/doc/html/dmxmap_8c.html | 150 + .../Xserver/hw/dmx/doc/html/dmxmap_8h-source.html | 62 + .../Xserver/hw/dmx/doc/html/dmxmap_8h.html | 148 + .../Xserver/hw/dmx/doc/html/dmxmotion_8c.html | 181 + .../hw/dmx/doc/html/dmxmotion_8h-source.html | 69 + .../Xserver/hw/dmx/doc/html/dmxmotion_8h.html | 180 + .../Xserver/hw/dmx/doc/html/dmxparse_8c.html | 74 + .../hw/dmx/doc/html/dmxparse_8h-source.html | 303 ++ .../Xserver/hw/dmx/doc/html/dmxparse_8h.html | 775 +++++ .../Xserver/hw/dmx/doc/html/dmxpict_8c.html | 1184 +++++++ .../Xserver/hw/dmx/doc/html/dmxpict_8h-source.html | 141 + .../Xserver/hw/dmx/doc/html/dmxpict_8h.html | 1418 ++++++++ .../Xserver/hw/dmx/doc/html/dmxpixmap_8c.html | 240 ++ .../hw/dmx/doc/html/dmxpixmap_8h-source.html | 83 + .../Xserver/hw/dmx/doc/html/dmxpixmap_8h.html | 351 ++ .../Xserver/hw/dmx/doc/html/dmxprint_8c.html | 119 + .../hw/dmx/doc/html/dmxprint_8h-source.html | 63 + .../Xserver/hw/dmx/doc/html/dmxprint_8h.html | 111 + .../Xserver/hw/dmx/doc/html/dmxprop_8c.html | 235 ++ .../Xserver/hw/dmx/doc/html/dmxprop_8h-source.html | 66 + .../Xserver/hw/dmx/doc/html/dmxprop_8h.html | 136 + .../hw/dmx/doc/html/dmxproto_8h-source.html | 431 +++ .../Xserver/hw/dmx/doc/html/dmxproto_8h.html | 89 + .../Xserver/hw/dmx/doc/html/dmxscrinit_8c.html | 378 ++ .../hw/dmx/doc/html/dmxscrinit_8h-source.html | 70 + .../Xserver/hw/dmx/doc/html/dmxscrinit_8h.html | 181 + .../Xserver/hw/dmx/doc/html/dmxshadow_8c.html | 71 + .../hw/dmx/doc/html/dmxshadow_8h-source.html | 66 + .../Xserver/hw/dmx/doc/html/dmxshadow_8h.html | 73 + .../Xserver/hw/dmx/doc/html/dmxsigio_8c.html | 230 ++ .../hw/dmx/doc/html/dmxsigio_8h-source.html | 65 + .../Xserver/hw/dmx/doc/html/dmxsigio_8h.html | 226 ++ .../Xserver/hw/dmx/doc/html/dmxstat_8c.html | 274 ++ .../Xserver/hw/dmx/doc/html/dmxstat_8h-source.html | 74 + .../Xserver/hw/dmx/doc/html/dmxstat_8h.html | 364 ++ .../Xserver/hw/dmx/doc/html/dmxsync_8c.html | 139 + .../Xserver/hw/dmx/doc/html/dmxsync_8h-source.html | 63 + .../Xserver/hw/dmx/doc/html/dmxsync_8h.html | 136 + .../Xserver/hw/dmx/doc/html/dmxvisual_8c.html | 151 + .../hw/dmx/doc/html/dmxvisual_8h-source.html | 67 + .../Xserver/hw/dmx/doc/html/dmxvisual_8h.html | 152 + .../Xserver/hw/dmx/doc/html/dmxwindow_8c.html | 865 +++++ .../hw/dmx/doc/html/dmxwindow_8h-source.html | 165 + .../Xserver/hw/dmx/doc/html/dmxwindow_8h.html | 969 ++++++ .../Xserver/hw/dmx/doc/html/dmxxinput_8c.html | 396 +++ .../programs/Xserver/hw/dmx/doc/html/doxygen.css | 49 + .../programs/Xserver/hw/dmx/doc/html/doxygen.png | Bin 0 -> 2352 bytes nx-X11/programs/Xserver/hw/dmx/doc/html/files.html | 120 + .../programs/Xserver/hw/dmx/doc/html/ftv2blank.png | Bin 0 -> 174 bytes .../programs/Xserver/hw/dmx/doc/html/ftv2doc.png | Bin 0 -> 255 bytes .../Xserver/hw/dmx/doc/html/ftv2folderclosed.png | Bin 0 -> 259 bytes .../Xserver/hw/dmx/doc/html/ftv2folderopen.png | Bin 0 -> 261 bytes .../Xserver/hw/dmx/doc/html/ftv2lastnode.png | Bin 0 -> 233 bytes .../programs/Xserver/hw/dmx/doc/html/ftv2link.png | Bin 0 -> 358 bytes .../Xserver/hw/dmx/doc/html/ftv2mlastnode.png | Bin 0 -> 160 bytes .../programs/Xserver/hw/dmx/doc/html/ftv2mnode.png | Bin 0 -> 194 bytes .../programs/Xserver/hw/dmx/doc/html/ftv2node.png | Bin 0 -> 235 bytes .../Xserver/hw/dmx/doc/html/ftv2plastnode.png | Bin 0 -> 165 bytes .../programs/Xserver/hw/dmx/doc/html/ftv2pnode.png | Bin 0 -> 200 bytes .../Xserver/hw/dmx/doc/html/ftv2vertline.png | Bin 0 -> 229 bytes .../Xserver/hw/dmx/doc/html/functions.html | 237 ++ .../Xserver/hw/dmx/doc/html/functions_vars.html | 237 ++ .../programs/Xserver/hw/dmx/doc/html/globals.html | 522 +++ .../Xserver/hw/dmx/doc/html/globals_defs.html | 47 + .../Xserver/hw/dmx/doc/html/globals_enum.html | 32 + .../Xserver/hw/dmx/doc/html/globals_eval.html | 41 + .../Xserver/hw/dmx/doc/html/globals_func.html | 388 +++ .../Xserver/hw/dmx/doc/html/globals_type.html | 96 + .../Xserver/hw/dmx/doc/html/globals_vars.html | 56 + nx-X11/programs/Xserver/hw/dmx/doc/html/index.html | 8 + .../Xserver/hw/dmx/doc/html/lib_2dmx_2dmx_8c.html | 894 +++++ .../Xserver/hw/dmx/doc/html/lnx-keyboard_8c.html | 511 +++ .../hw/dmx/doc/html/lnx-keyboard_8h-source.html | 83 + .../Xserver/hw/dmx/doc/html/lnx-keyboard_8h.html | 388 +++ .../Xserver/hw/dmx/doc/html/lnx-ms_8c.html | 352 ++ .../Xserver/hw/dmx/doc/html/lnx-ms_8h-source.html | 75 + .../Xserver/hw/dmx/doc/html/lnx-ms_8h.html | 288 ++ .../Xserver/hw/dmx/doc/html/lnx-ps2_8c.html | 352 ++ .../Xserver/hw/dmx/doc/html/lnx-ps2_8h-source.html | 75 + .../Xserver/hw/dmx/doc/html/lnx-ps2_8h.html | 288 ++ nx-X11/programs/Xserver/hw/dmx/doc/html/main.html | 26 + .../doc/html/programs_2Xserver_2Xext_2dmx_8c.html | 71 + .../hw/dmx/doc/html/structDMXConfigCmdStruct.html | 30 + .../hw/dmx/doc/html/structDMXConfigListStruct.html | 30 + .../dmx/doc/html/structDMXDesktopAttributes.html | 32 + .../doc/html/structDMXDesktopAttributesRec.html | 32 + .../hw/dmx/doc/html/structDMXInputAttributes.html | 32 + .../dmx/doc/html/structDMXInputAttributesRec.html | 32 + .../hw/dmx/doc/html/structDMXScreenAttributes.html | 32 + .../dmx/doc/html/structDMXScreenAttributesRec.html | 32 + .../hw/dmx/doc/html/structDMXWindowAttributes.html | 32 + .../dmx/doc/html/structDMXWindowAttributesRec.html | 32 + .../hw/dmx/doc/html/struct__DMXConfigComment.html | 32 + .../hw/dmx/doc/html/struct__DMXConfigDisplay.html | 32 + .../hw/dmx/doc/html/struct__DMXConfigEntry.html | 32 + .../hw/dmx/doc/html/struct__DMXConfigFullDim.html | 32 + .../hw/dmx/doc/html/struct__DMXConfigNumber.html | 32 + .../hw/dmx/doc/html/struct__DMXConfigOption.html | 32 + .../hw/dmx/doc/html/struct__DMXConfigPair.html | 32 + .../hw/dmx/doc/html/struct__DMXConfigParam.html | 32 + .../hw/dmx/doc/html/struct__DMXConfigPartDim.html | 32 + .../hw/dmx/doc/html/struct__DMXConfigString.html | 32 + .../hw/dmx/doc/html/struct__DMXConfigSub.html | 32 + .../hw/dmx/doc/html/struct__DMXConfigToken.html | 32 + .../hw/dmx/doc/html/struct__DMXConfigVirtual.html | 32 + .../hw/dmx/doc/html/struct__DMXConfigWall.html | 32 + .../hw/dmx/doc/html/struct__DMXEventMap.html | 82 + .../hw/dmx/doc/html/struct__DMXInputInfo.html | 490 +++ .../hw/dmx/doc/html/struct__DMXLocalInitInfo.html | 778 +++++ .../hw/dmx/doc/html/struct__DMXLocalInputInfo.html | 996 ++++++ .../hw/dmx/doc/html/struct__DMXScreenInfo.html | 1330 +++++++ .../hw/dmx/doc/html/struct__DMXStatAvg.html | 30 + .../hw/dmx/doc/html/struct__DMXStatInfo.html | 30 + .../Xserver/hw/dmx/doc/html/struct__Event.html | 104 + .../hw/dmx/doc/html/struct__EventQueue.html | 224 ++ .../Xserver/hw/dmx/doc/html/struct__dmxArg.html | 104 + .../hw/dmx/doc/html/struct__dmxColormapPriv.html | 32 + .../hw/dmx/doc/html/struct__dmxCursorPriv.html | 32 + .../hw/dmx/doc/html/struct__dmxFontPriv.html | 32 + .../Xserver/hw/dmx/doc/html/struct__dmxGCPriv.html | 32 + .../hw/dmx/doc/html/struct__dmxGlyphPriv.html | 58 + .../hw/dmx/doc/html/struct__dmxPictPriv.html | 82 + .../hw/dmx/doc/html/struct__dmxPixPriv.html | 32 + .../hw/dmx/doc/html/struct__dmxWinPriv.html | 32 + .../Xserver/hw/dmx/doc/html/struct__myPrivate.html | 272 ++ .../hw/dmx/doc/html/structdmxGlxVisualPrivate.html | 32 + .../hw/dmx/doc/html/structxDMXAddInputReply.html | 32 + .../hw/dmx/doc/html/structxDMXAddInputReq.html | 32 + .../hw/dmx/doc/html/structxDMXAddScreenReply.html | 32 + .../hw/dmx/doc/html/structxDMXAddScreenReq.html | 32 + .../structxDMXChangeDesktopAttributesReply.html | 32 + .../html/structxDMXChangeDesktopAttributesReq.html | 32 + .../structxDMXChangeScreensAttributesReply.html | 32 + .../html/structxDMXChangeScreensAttributesReq.html | 32 + .../html/structxDMXForceWindowCreationReply.html | 32 + .../doc/html/structxDMXForceWindowCreationReq.html | 32 + .../html/structxDMXGetDesktopAttributesReply.html | 32 + .../html/structxDMXGetDesktopAttributesReq.html | 32 + .../html/structxDMXGetInputAttributesReply.html | 32 + .../doc/html/structxDMXGetInputAttributesReq.html | 32 + .../dmx/doc/html/structxDMXGetInputCountReply.html | 32 + .../dmx/doc/html/structxDMXGetInputCountReq.html | 32 + .../html/structxDMXGetScreenAttributesReply.html | 32 + .../doc/html/structxDMXGetScreenAttributesReq.html | 32 + .../doc/html/structxDMXGetScreenCountReply.html | 32 + .../dmx/doc/html/structxDMXGetScreenCountReq.html | 32 + .../html/structxDMXGetWindowAttributesReply.html | 32 + .../doc/html/structxDMXGetWindowAttributesReq.html | 32 + .../dmx/doc/html/structxDMXQueryVersionReply.html | 32 + .../hw/dmx/doc/html/structxDMXQueryVersionReq.html | 32 + .../dmx/doc/html/structxDMXRemoveInputReply.html | 32 + .../hw/dmx/doc/html/structxDMXRemoveInputReq.html | 32 + .../dmx/doc/html/structxDMXRemoveScreenReply.html | 32 + .../hw/dmx/doc/html/structxDMXRemoveScreenReq.html | 32 + .../hw/dmx/doc/html/structxDMXSyncReply.html | 32 + .../Xserver/hw/dmx/doc/html/structxDMXSyncReq.html | 32 + nx-X11/programs/Xserver/hw/dmx/doc/html/tree.html | 295 ++ .../Xserver/hw/dmx/doc/html/usb-common_8c.html | 222 ++ .../hw/dmx/doc/html/usb-common_8h-source.html | 74 + .../Xserver/hw/dmx/doc/html/usb-common_8h.html | 167 + .../Xserver/hw/dmx/doc/html/usb-keyboard_8c.html | 231 ++ .../hw/dmx/doc/html/usb-keyboard_8h-source.html | 68 + .../Xserver/hw/dmx/doc/html/usb-keyboard_8h.html | 174 + .../Xserver/hw/dmx/doc/html/usb-mouse_8c.html | 190 + .../hw/dmx/doc/html/usb-mouse_8h-source.html | 68 + .../Xserver/hw/dmx/doc/html/usb-mouse_8h.html | 134 + .../Xserver/hw/dmx/doc/html/usb-other_8c.html | 191 + .../hw/dmx/doc/html/usb-other_8h-source.html | 68 + .../Xserver/hw/dmx/doc/html/usb-other_8h.html | 134 + .../hw/dmx/doc/html/usb-private_8h-source.html | 131 + .../Xserver/hw/dmx/doc/html/usb-private_8h.html | 41 + nx-X11/programs/Xserver/hw/dmx/doc/scaled.sgml | 707 ++++ nx-X11/programs/Xserver/hw/dmx/doc/scaled.txt | 579 ++++ nx-X11/programs/Xserver/hw/dmx/examples/Imakefile | 56 + .../programs/Xserver/hw/dmx/examples/dmxaddinput.c | 84 + .../Xserver/hw/dmx/examples/dmxaddscreen.c | 106 + .../programs/Xserver/hw/dmx/examples/dmxreconfig.c | 163 + .../programs/Xserver/hw/dmx/examples/dmxresize.c | 105 + .../programs/Xserver/hw/dmx/examples/dmxrminput.c | 79 + .../programs/Xserver/hw/dmx/examples/dmxrmscreen.c | 81 + .../programs/Xserver/hw/dmx/examples/dmxwininfo.c | 497 +++ nx-X11/programs/Xserver/hw/dmx/examples/ev.c | 183 + nx-X11/programs/Xserver/hw/dmx/examples/evi.c | 87 + nx-X11/programs/Xserver/hw/dmx/examples/res.c | 100 + nx-X11/programs/Xserver/hw/dmx/examples/xbell.c | 102 + nx-X11/programs/Xserver/hw/dmx/examples/xdmx.c | 240 ++ nx-X11/programs/Xserver/hw/dmx/examples/xinput.c | 319 ++ nx-X11/programs/Xserver/hw/dmx/examples/xled.c | 125 + nx-X11/programs/Xserver/hw/dmx/examples/xtest.c | 76 + nx-X11/programs/Xserver/hw/dmx/glxProxy/Imakefile | 52 + nx-X11/programs/Xserver/hw/dmx/glxProxy/compsize.c | 564 +++ .../programs/Xserver/hw/dmx/glxProxy/g_disptab.c | 612 ++++ .../programs/Xserver/hw/dmx/glxProxy/g_disptab.h | 676 ++++ .../Xserver/hw/dmx/glxProxy/g_renderswap.c | 2360 +++++++++++++ nx-X11/programs/Xserver/hw/dmx/glxProxy/global.c | 77 + nx-X11/programs/Xserver/hw/dmx/glxProxy/glxcmds.c | 3636 ++++++++++++++++++++ .../programs/Xserver/hw/dmx/glxProxy/glxcmdsswap.c | 1059 ++++++ .../programs/Xserver/hw/dmx/glxProxy/glxcontext.h | 117 + .../programs/Xserver/hw/dmx/glxProxy/glxdrawable.h | 124 + nx-X11/programs/Xserver/hw/dmx/glxProxy/glxerror.h | 58 + nx-X11/programs/Xserver/hw/dmx/glxProxy/glxext.c | 512 +++ nx-X11/programs/Xserver/hw/dmx/glxProxy/glxext.h | 98 + .../programs/Xserver/hw/dmx/glxProxy/glxfbconfig.c | 111 + .../programs/Xserver/hw/dmx/glxProxy/glxfbconfig.h | 43 + .../programs/Xserver/hw/dmx/glxProxy/glxscreens.c | 390 +++ .../programs/Xserver/hw/dmx/glxProxy/glxscreens.h | 63 + .../programs/Xserver/hw/dmx/glxProxy/glxserver.h | 327 ++ .../programs/Xserver/hw/dmx/glxProxy/glxsingle.c | 1013 ++++++ .../programs/Xserver/hw/dmx/glxProxy/glxsingle.h | 59 + nx-X11/programs/Xserver/hw/dmx/glxProxy/glxswap.c | 539 +++ nx-X11/programs/Xserver/hw/dmx/glxProxy/glxswap.h | 47 + nx-X11/programs/Xserver/hw/dmx/glxProxy/glxutil.c | 121 + nx-X11/programs/Xserver/hw/dmx/glxProxy/glxutil.h | 54 + .../programs/Xserver/hw/dmx/glxProxy/glxvendor.c | 583 ++++ .../programs/Xserver/hw/dmx/glxProxy/glxvendor.h | 55 + .../programs/Xserver/hw/dmx/glxProxy/glxvisuals.c | 542 +++ .../programs/Xserver/hw/dmx/glxProxy/glxvisuals.h | 55 + .../programs/Xserver/hw/dmx/glxProxy/render2swap.c | 348 ++ .../Xserver/hw/dmx/glxProxy/renderpixswap.c | 390 +++ nx-X11/programs/Xserver/hw/dmx/glxProxy/unpack.h | 234 ++ .../programs/Xserver/hw/dmx/input/ChkNotMaskEv.c | 108 + .../programs/Xserver/hw/dmx/input/ChkNotMaskEv.h | 41 + nx-X11/programs/Xserver/hw/dmx/input/Imakefile | 46 + nx-X11/programs/Xserver/hw/dmx/input/dmxarg.c | 176 + nx-X11/programs/Xserver/hw/dmx/input/dmxarg.h | 50 + nx-X11/programs/Xserver/hw/dmx/input/dmxbackend.c | 608 ++++ nx-X11/programs/Xserver/hw/dmx/input/dmxbackend.h | 57 + nx-X11/programs/Xserver/hw/dmx/input/dmxcommon.c | 674 ++++ nx-X11/programs/Xserver/hw/dmx/input/dmxcommon.h | 133 + nx-X11/programs/Xserver/hw/dmx/input/dmxconsole.c | 1023 ++++++ nx-X11/programs/Xserver/hw/dmx/input/dmxconsole.h | 60 + nx-X11/programs/Xserver/hw/dmx/input/dmxdetach.c | 59 + nx-X11/programs/Xserver/hw/dmx/input/dmxdummy.c | 87 + nx-X11/programs/Xserver/hw/dmx/input/dmxdummy.h | 44 + nx-X11/programs/Xserver/hw/dmx/input/dmxeq.c | 309 ++ nx-X11/programs/Xserver/hw/dmx/input/dmxeq.h | 44 + nx-X11/programs/Xserver/hw/dmx/input/dmxevents.c | 716 ++++ nx-X11/programs/Xserver/hw/dmx/input/dmxevents.h | 47 + .../programs/Xserver/hw/dmx/input/dmxinputinit.c | 1298 +++++++ .../programs/Xserver/hw/dmx/input/dmxinputinit.h | 294 ++ nx-X11/programs/Xserver/hw/dmx/input/dmxmap.c | 122 + nx-X11/programs/Xserver/hw/dmx/input/dmxmap.h | 43 + nx-X11/programs/Xserver/hw/dmx/input/dmxmotion.c | 144 + nx-X11/programs/Xserver/hw/dmx/input/dmxmotion.h | 50 + nx-X11/programs/Xserver/hw/dmx/input/dmxsigio.c | 234 ++ nx-X11/programs/Xserver/hw/dmx/input/dmxsigio.h | 46 + nx-X11/programs/Xserver/hw/dmx/input/dmxxinput.c | 156 + .../programs/Xserver/hw/dmx/input/lnx-keyboard.c | 975 ++++++ .../programs/Xserver/hw/dmx/input/lnx-keyboard.h | 64 + nx-X11/programs/Xserver/hw/dmx/input/lnx-ms.c | 323 ++ nx-X11/programs/Xserver/hw/dmx/input/lnx-ms.h | 56 + nx-X11/programs/Xserver/hw/dmx/input/lnx-ps2.c | 291 ++ nx-X11/programs/Xserver/hw/dmx/input/lnx-ps2.h | 56 + nx-X11/programs/Xserver/hw/dmx/input/usb-common.c | 383 +++ nx-X11/programs/Xserver/hw/dmx/input/usb-common.h | 56 + .../programs/Xserver/hw/dmx/input/usb-keyboard.c | 442 +++ .../programs/Xserver/hw/dmx/input/usb-keyboard.h | 49 + nx-X11/programs/Xserver/hw/dmx/input/usb-mouse.c | 127 + nx-X11/programs/Xserver/hw/dmx/input/usb-mouse.h | 49 + nx-X11/programs/Xserver/hw/dmx/input/usb-other.c | 162 + nx-X11/programs/Xserver/hw/dmx/input/usb-other.h | 49 + nx-X11/programs/Xserver/hw/dmx/input/usb-private.h | 118 + 439 files changed, 102558 insertions(+) create mode 100644 nx-X11/programs/Xserver/hw/dmx/Imakefile create mode 100644 nx-X11/programs/Xserver/hw/dmx/Xdmx.man create mode 100644 nx-X11/programs/Xserver/hw/dmx/config/Canvas.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/config/Canvas.h create mode 100644 nx-X11/programs/Xserver/hw/dmx/config/CanvasP.h create mode 100644 nx-X11/programs/Xserver/hw/dmx/config/Imakefile create mode 100644 nx-X11/programs/Xserver/hw/dmx/config/TODO create mode 100644 nx-X11/programs/Xserver/hw/dmx/config/dmxcompat.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/config/dmxcompat.h create mode 100644 nx-X11/programs/Xserver/hw/dmx/config/dmxconfig.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/config/dmxconfig.h create mode 100644 nx-X11/programs/Xserver/hw/dmx/config/dmxparse.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/config/dmxparse.h create mode 100644 nx-X11/programs/Xserver/hw/dmx/config/dmxprint.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/config/dmxprint.h create mode 100644 nx-X11/programs/Xserver/hw/dmx/config/dmxtodmx.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/config/dmxtodmx.man create mode 100644 nx-X11/programs/Xserver/hw/dmx/config/parser.y create mode 100644 nx-X11/programs/Xserver/hw/dmx/config/scanner.l create mode 100644 nx-X11/programs/Xserver/hw/dmx/config/test-a.in create mode 100644 nx-X11/programs/Xserver/hw/dmx/config/test-a.out create mode 100644 nx-X11/programs/Xserver/hw/dmx/config/test-b.in create mode 100644 nx-X11/programs/Xserver/hw/dmx/config/test-b.out create mode 100644 nx-X11/programs/Xserver/hw/dmx/config/test-c.in create mode 100644 nx-X11/programs/Xserver/hw/dmx/config/test-c.out create mode 100644 nx-X11/programs/Xserver/hw/dmx/config/test-d.in create mode 100644 nx-X11/programs/Xserver/hw/dmx/config/test-d.out create mode 100644 nx-X11/programs/Xserver/hw/dmx/config/test-e.in create mode 100644 nx-X11/programs/Xserver/hw/dmx/config/test-e.out create mode 100644 nx-X11/programs/Xserver/hw/dmx/config/test-f.in create mode 100644 nx-X11/programs/Xserver/hw/dmx/config/test-f.out create mode 100644 nx-X11/programs/Xserver/hw/dmx/config/test-g.in create mode 100644 nx-X11/programs/Xserver/hw/dmx/config/test-g.out create mode 100644 nx-X11/programs/Xserver/hw/dmx/config/test-h.in create mode 100644 nx-X11/programs/Xserver/hw/dmx/config/test-h.out create mode 100644 nx-X11/programs/Xserver/hw/dmx/config/test-i.in create mode 100644 nx-X11/programs/Xserver/hw/dmx/config/test-i.out create mode 100644 nx-X11/programs/Xserver/hw/dmx/config/test-j.in create mode 100644 nx-X11/programs/Xserver/hw/dmx/config/test-j.out create mode 100644 nx-X11/programs/Xserver/hw/dmx/config/test-k.in create mode 100644 nx-X11/programs/Xserver/hw/dmx/config/test-k.out create mode 100644 nx-X11/programs/Xserver/hw/dmx/config/test-l.in create mode 100644 nx-X11/programs/Xserver/hw/dmx/config/test-l.out create mode 100644 nx-X11/programs/Xserver/hw/dmx/config/vdltodmx.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/config/vdltodmx.man create mode 100644 nx-X11/programs/Xserver/hw/dmx/config/xdmxconfig.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/config/xdmxconfig.man create mode 100644 nx-X11/programs/Xserver/hw/dmx/dmx.h create mode 100644 nx-X11/programs/Xserver/hw/dmx/dmx_glxvisuals.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/dmx_glxvisuals.h create mode 100644 nx-X11/programs/Xserver/hw/dmx/dmxcb.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/dmxcb.h create mode 100644 nx-X11/programs/Xserver/hw/dmx/dmxclient.h create mode 100644 nx-X11/programs/Xserver/hw/dmx/dmxcmap.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/dmxcmap.h create mode 100644 nx-X11/programs/Xserver/hw/dmx/dmxcursor.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/dmxcursor.h create mode 100644 nx-X11/programs/Xserver/hw/dmx/dmxdpms.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/dmxdpms.h create mode 100644 nx-X11/programs/Xserver/hw/dmx/dmxextension.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/dmxextension.h create mode 100644 nx-X11/programs/Xserver/hw/dmx/dmxfont.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/dmxfont.h create mode 100644 nx-X11/programs/Xserver/hw/dmx/dmxgc.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/dmxgc.h create mode 100644 nx-X11/programs/Xserver/hw/dmx/dmxgcops.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/dmxgcops.h create mode 100644 nx-X11/programs/Xserver/hw/dmx/dmxinit.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/dmxinit.h create mode 100644 nx-X11/programs/Xserver/hw/dmx/dmxinput.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/dmxinput.h create mode 100644 nx-X11/programs/Xserver/hw/dmx/dmxlog.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/dmxlog.h create mode 100644 nx-X11/programs/Xserver/hw/dmx/dmxpict.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/dmxpict.h create mode 100644 nx-X11/programs/Xserver/hw/dmx/dmxpixmap.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/dmxpixmap.h create mode 100644 nx-X11/programs/Xserver/hw/dmx/dmxprop.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/dmxprop.h create mode 100644 nx-X11/programs/Xserver/hw/dmx/dmxscrinit.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/dmxscrinit.h create mode 100644 nx-X11/programs/Xserver/hw/dmx/dmxshadow.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/dmxshadow.h create mode 100644 nx-X11/programs/Xserver/hw/dmx/dmxstat.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/dmxstat.h create mode 100644 nx-X11/programs/Xserver/hw/dmx/dmxsync.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/dmxsync.h create mode 100644 nx-X11/programs/Xserver/hw/dmx/dmxvisual.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/dmxvisual.h create mode 100644 nx-X11/programs/Xserver/hw/dmx/dmxwindow.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/dmxwindow.h create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/DMXSpec-v1.txt create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/DMXSpec.txt create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/Imakefile create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/Makefile.linux create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/dmx.sgml create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/dmx.txt create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/doxygen.conf create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/doxygen.css create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/doxygen.foot create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/doxygen.head create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/ChkNotMaskEv_8c.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/ChkNotMaskEv_8h-source.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/ChkNotMaskEv_8h.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/annotated.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/classes.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmx_8h-source.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmx_8h.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmx__glxvisuals_8h-source.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxarg_8c.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxarg_8h-source.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxarg_8h.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxbackend_8c.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxbackend_8h-source.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxbackend_8h.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcb_8c.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcb_8h-source.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcb_8h.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxclient_8h-source.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxclient_8h.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcmap_8c.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcmap_8h-source.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcmap_8h.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcommon_8c.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcommon_8h-source.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcommon_8h.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcompat_8c.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcompat_8h-source.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcompat_8h.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxconfig_8c.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxconfig_8h-source.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxconfig_8h.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxconsole_8c.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxconsole_8h-source.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxconsole_8h.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcursor_8c.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcursor_8h-source.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcursor_8h.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxdetach_8c.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxdpms_8c.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxdpms_8h-source.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxdpms_8h.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxdummy_8c.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxdummy_8h-source.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxdummy_8h.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxeq_8c.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxeq_8h-source.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxeq_8h.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxevents_8c.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxevents_8h-source.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxevents_8h.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxext_8h-source.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxext_8h.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxextension_8c.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxextension_8h-source.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxextension_8h.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxfont_8c.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxfont_8h-source.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxfont_8h.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxgc_8c.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxgc_8h-source.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxgc_8h.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxgcops_8c.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxgcops_8h-source.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxgcops_8h.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxinit_8c.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxinit_8h-source.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxinit_8h.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxinput_8c.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxinput_8h-source.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxinput_8h.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxinputinit_8c.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxinputinit_8h-source.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxinputinit_8h.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxlog_8c.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxlog_8h-source.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxlog_8h.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxmap_8c.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxmap_8h-source.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxmap_8h.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxmotion_8c.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxmotion_8h-source.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxmotion_8h.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxparse_8c.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxparse_8h-source.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxparse_8h.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxpict_8c.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxpict_8h-source.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxpict_8h.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxpixmap_8c.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxpixmap_8h-source.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxpixmap_8h.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxprint_8c.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxprint_8h-source.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxprint_8h.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxprop_8c.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxprop_8h-source.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxprop_8h.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxproto_8h-source.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxproto_8h.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxscrinit_8c.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxscrinit_8h-source.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxscrinit_8h.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxshadow_8c.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxshadow_8h-source.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxshadow_8h.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxsigio_8c.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxsigio_8h-source.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxsigio_8h.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxstat_8c.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxstat_8h-source.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxstat_8h.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxsync_8c.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxsync_8h-source.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxsync_8h.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxvisual_8c.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxvisual_8h-source.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxvisual_8h.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxwindow_8c.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxwindow_8h-source.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxwindow_8h.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/dmxxinput_8c.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/doxygen.css create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/doxygen.png create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/files.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/ftv2blank.png create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/ftv2doc.png create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/ftv2folderclosed.png create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/ftv2folderopen.png create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/ftv2lastnode.png create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/ftv2link.png create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/ftv2mlastnode.png create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/ftv2mnode.png create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/ftv2node.png create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/ftv2plastnode.png create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/ftv2pnode.png create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/ftv2vertline.png create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/functions.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/functions_vars.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/globals.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/globals_defs.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/globals_enum.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/globals_eval.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/globals_func.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/globals_type.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/globals_vars.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/index.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/lib_2dmx_2dmx_8c.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/lnx-keyboard_8c.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/lnx-keyboard_8h-source.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/lnx-keyboard_8h.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/lnx-ms_8c.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/lnx-ms_8h-source.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/lnx-ms_8h.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/lnx-ps2_8c.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/lnx-ps2_8h-source.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/lnx-ps2_8h.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/main.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/programs_2Xserver_2Xext_2dmx_8c.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/structDMXConfigCmdStruct.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/structDMXConfigListStruct.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/structDMXDesktopAttributes.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/structDMXDesktopAttributesRec.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/structDMXInputAttributes.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/structDMXInputAttributesRec.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/structDMXScreenAttributes.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/structDMXScreenAttributesRec.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/structDMXWindowAttributes.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/structDMXWindowAttributesRec.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXConfigComment.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXConfigDisplay.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXConfigEntry.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXConfigFullDim.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXConfigNumber.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXConfigOption.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXConfigPair.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXConfigParam.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXConfigPartDim.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXConfigString.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXConfigSub.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXConfigToken.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXConfigVirtual.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXConfigWall.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXEventMap.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXInputInfo.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXLocalInitInfo.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXLocalInputInfo.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXScreenInfo.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXStatAvg.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXStatInfo.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/struct__Event.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/struct__EventQueue.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/struct__dmxArg.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/struct__dmxColormapPriv.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/struct__dmxCursorPriv.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/struct__dmxFontPriv.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/struct__dmxGCPriv.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/struct__dmxGlyphPriv.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/struct__dmxPictPriv.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/struct__dmxPixPriv.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/struct__dmxWinPriv.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/struct__myPrivate.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/structdmxGlxVisualPrivate.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXAddInputReply.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXAddInputReq.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXAddScreenReply.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXAddScreenReq.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXChangeDesktopAttributesReply.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXChangeDesktopAttributesReq.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXChangeScreensAttributesReply.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXChangeScreensAttributesReq.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXForceWindowCreationReply.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXForceWindowCreationReq.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXGetDesktopAttributesReply.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXGetDesktopAttributesReq.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXGetInputAttributesReply.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXGetInputAttributesReq.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXGetInputCountReply.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXGetInputCountReq.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXGetScreenAttributesReply.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXGetScreenAttributesReq.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXGetScreenCountReply.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXGetScreenCountReq.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXGetWindowAttributesReply.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXGetWindowAttributesReq.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXQueryVersionReply.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXQueryVersionReq.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXRemoveInputReply.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXRemoveInputReq.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXRemoveScreenReply.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXRemoveScreenReq.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXSyncReply.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXSyncReq.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/tree.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/usb-common_8c.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/usb-common_8h-source.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/usb-common_8h.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/usb-keyboard_8c.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/usb-keyboard_8h-source.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/usb-keyboard_8h.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/usb-mouse_8c.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/usb-mouse_8h-source.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/usb-mouse_8h.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/usb-other_8c.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/usb-other_8h-source.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/usb-other_8h.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/usb-private_8h-source.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/html/usb-private_8h.html create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/scaled.sgml create mode 100644 nx-X11/programs/Xserver/hw/dmx/doc/scaled.txt create mode 100644 nx-X11/programs/Xserver/hw/dmx/examples/Imakefile create mode 100644 nx-X11/programs/Xserver/hw/dmx/examples/dmxaddinput.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/examples/dmxaddscreen.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/examples/dmxreconfig.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/examples/dmxresize.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/examples/dmxrminput.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/examples/dmxrmscreen.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/examples/dmxwininfo.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/examples/ev.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/examples/evi.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/examples/res.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/examples/xbell.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/examples/xdmx.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/examples/xinput.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/examples/xled.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/examples/xtest.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/glxProxy/Imakefile create mode 100644 nx-X11/programs/Xserver/hw/dmx/glxProxy/compsize.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/glxProxy/g_disptab.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/glxProxy/g_disptab.h create mode 100644 nx-X11/programs/Xserver/hw/dmx/glxProxy/g_renderswap.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/glxProxy/global.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/glxProxy/glxcmds.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/glxProxy/glxcmdsswap.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/glxProxy/glxcontext.h create mode 100644 nx-X11/programs/Xserver/hw/dmx/glxProxy/glxdrawable.h create mode 100644 nx-X11/programs/Xserver/hw/dmx/glxProxy/glxerror.h create mode 100644 nx-X11/programs/Xserver/hw/dmx/glxProxy/glxext.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/glxProxy/glxext.h create mode 100644 nx-X11/programs/Xserver/hw/dmx/glxProxy/glxfbconfig.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/glxProxy/glxfbconfig.h create mode 100644 nx-X11/programs/Xserver/hw/dmx/glxProxy/glxscreens.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/glxProxy/glxscreens.h create mode 100644 nx-X11/programs/Xserver/hw/dmx/glxProxy/glxserver.h create mode 100644 nx-X11/programs/Xserver/hw/dmx/glxProxy/glxsingle.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/glxProxy/glxsingle.h create mode 100644 nx-X11/programs/Xserver/hw/dmx/glxProxy/glxswap.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/glxProxy/glxswap.h create mode 100644 nx-X11/programs/Xserver/hw/dmx/glxProxy/glxutil.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/glxProxy/glxutil.h create mode 100644 nx-X11/programs/Xserver/hw/dmx/glxProxy/glxvendor.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/glxProxy/glxvendor.h create mode 100644 nx-X11/programs/Xserver/hw/dmx/glxProxy/glxvisuals.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/glxProxy/glxvisuals.h create mode 100644 nx-X11/programs/Xserver/hw/dmx/glxProxy/render2swap.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/glxProxy/renderpixswap.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/glxProxy/unpack.h create mode 100644 nx-X11/programs/Xserver/hw/dmx/input/ChkNotMaskEv.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/input/ChkNotMaskEv.h create mode 100644 nx-X11/programs/Xserver/hw/dmx/input/Imakefile create mode 100644 nx-X11/programs/Xserver/hw/dmx/input/dmxarg.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/input/dmxarg.h create mode 100644 nx-X11/programs/Xserver/hw/dmx/input/dmxbackend.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/input/dmxbackend.h create mode 100644 nx-X11/programs/Xserver/hw/dmx/input/dmxcommon.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/input/dmxcommon.h create mode 100644 nx-X11/programs/Xserver/hw/dmx/input/dmxconsole.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/input/dmxconsole.h create mode 100644 nx-X11/programs/Xserver/hw/dmx/input/dmxdetach.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/input/dmxdummy.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/input/dmxdummy.h create mode 100644 nx-X11/programs/Xserver/hw/dmx/input/dmxeq.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/input/dmxeq.h create mode 100644 nx-X11/programs/Xserver/hw/dmx/input/dmxevents.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/input/dmxevents.h create mode 100644 nx-X11/programs/Xserver/hw/dmx/input/dmxinputinit.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/input/dmxinputinit.h create mode 100644 nx-X11/programs/Xserver/hw/dmx/input/dmxmap.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/input/dmxmap.h create mode 100644 nx-X11/programs/Xserver/hw/dmx/input/dmxmotion.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/input/dmxmotion.h create mode 100644 nx-X11/programs/Xserver/hw/dmx/input/dmxsigio.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/input/dmxsigio.h create mode 100644 nx-X11/programs/Xserver/hw/dmx/input/dmxxinput.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/input/lnx-keyboard.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/input/lnx-keyboard.h create mode 100644 nx-X11/programs/Xserver/hw/dmx/input/lnx-ms.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/input/lnx-ms.h create mode 100644 nx-X11/programs/Xserver/hw/dmx/input/lnx-ps2.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/input/lnx-ps2.h create mode 100644 nx-X11/programs/Xserver/hw/dmx/input/usb-common.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/input/usb-common.h create mode 100644 nx-X11/programs/Xserver/hw/dmx/input/usb-keyboard.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/input/usb-keyboard.h create mode 100644 nx-X11/programs/Xserver/hw/dmx/input/usb-mouse.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/input/usb-mouse.h create mode 100644 nx-X11/programs/Xserver/hw/dmx/input/usb-other.c create mode 100644 nx-X11/programs/Xserver/hw/dmx/input/usb-other.h create mode 100644 nx-X11/programs/Xserver/hw/dmx/input/usb-private.h (limited to 'nx-X11/programs/Xserver/hw/dmx') diff --git a/nx-X11/programs/Xserver/hw/dmx/Imakefile b/nx-X11/programs/Xserver/hw/dmx/Imakefile new file mode 100644 index 000000000..b8c16dd53 --- /dev/null +++ b/nx-X11/programs/Xserver/hw/dmx/Imakefile @@ -0,0 +1,125 @@ +XCOMM $XFree86$ + +#include + +#if BuildXinerama +PANORAMIX_SRCS = panoramiX.c +PANORAMIX_OBJS = panoramiX.o +#endif + +#if BuildGlxExt +GLX_SRCS = dmx_glxvisuals.c $(PANORAMIX_SRCS) +GLX_OBJS = dmx_glxvisuals.o $(PANORAMIX_OBJS) +DMX_GLX_DEFINES = $(GLX_DEFINES) -DGLXPROXY +GLXPROXY_SUBDIR = glxProxy +#endif + +#define IHaveSubdirs + +#if BuildServersOnly && !BuildDmxDevelTools +SUBDIRS = input config $(GLXPROXY_SUBDIR) +#else +SUBDIRS = input config doc examples $(GLXPROXY_SUBDIR) +#endif + +#if BuildRender +RENDER_SRCS = dmxpict.c +RENDER_OBJS = dmxpict.o +#endif + +SRCS = dmxinit.c \ + dmxscrinit.c \ + dmxshadow.c \ + dmxcursor.c \ + dmxinput.c \ + dmxdpms.c \ + dmxgc.c \ + dmxgcops.c \ + dmxwindow.c \ + dmxpixmap.c \ + dmxfont.c \ + dmxcmap.c \ + dmxvisual.c \ + dmxlog.c \ + dmxcb.c \ + dmxprop.c \ + dmxstat.c \ + dmxsync.c \ + dmxextension.c \ + miinitext.c \ + $(GLX_SRCS) \ + $(RENDER_SRCS) + +OBJS = dmxinit.o \ + dmxscrinit.o \ + dmxshadow.o \ + dmxcursor.o \ + dmxinput.o \ + dmxdpms.o \ + dmxgc.o \ + dmxgcops.o \ + dmxwindow.o \ + dmxpixmap.o \ + dmxfont.o \ + dmxcmap.o \ + dmxvisual.o \ + dmxlog.o \ + dmxcb.o \ + dmxprop.o \ + dmxstat.o \ + dmxsync.o \ + dmxextension.o \ + miinitext.o \ + $(GLX_OBJS) \ + $(RENDER_OBJS) + +#include + +#ifdef XVendorString + VENDORSTRING = XVendorString + VENDOR_STRING = -DVENDOR_STRING=\"$(VENDORSTRING)\" +#endif + +#ifdef XVendorRelease + VENDORRELEASE = XVendorRelease + VENDOR_RELEASE = -DVENDOR_RELEASE="$(VENDORRELEASE)" +#endif + +VENDOR_DEFINES = $(VENDOR_STRING) $(VENDOR_RELEASE) + + OSNAME = OSName + OSVENDOR = OSVendor +OSNAME_DEFINES = -DOSNAME='"$(OSNAME)"' -DOSVENDOR='"$(OSVENDOR)"' + +INCLUDES = -I. -I$(XBUILDINCDIR) -I$(FONTINCSRC) \ + -I../../mi -I../../include -I../../os \ + -I../../fb -I../../miext/shadow -I../../render \ + -I$(EXTINCSRC) -I$(XINCLUDESRC) -I$(SERVERSRC)/Xext + +DEFINES = $(OS_DEFINES) $(EXT_DEFINES) -DDMXEXT -DXTEST \ + $(DMX_GLX_DEFINES) $(DMX_DEFINES) $(VENDOR_DEFINES) \ + $(OSNAME_DEFINES) + +all:: $(OBJS) + +MakeSubdirs($(SUBDIRS)) +DependSubdirs($(SUBDIRS)) + +LinkSourceFile(miinitext.c,$(SERVERSRC)/mi) +SpecialCObjectRule(miinitext,$(ICONFIGFILES),-DDMXSERVER) + +#if BuildGlxExt +LinkSourceFile(panoramiX.c,$(SERVERSRC)/Xext) +#if HasGcc3 +SpecialCObjectRule(panoramiX,$(ICONFIGFILES),-Wno-missing-prototypes -Wno-strict-prototypes -Wno-missing-declarations -Wno-sign-compare) +#else +SpecialCObjectRule(panoramiX,$(ICONFIGFILES),$(_NOOP_)) +#endif +#endif + +NormalLibraryObjectRule() +NormalLibraryTarget(dmx,$(OBJS)) + +InstallManPage(Xdmx,$(MANDIR)) + +DependTarget() diff --git a/nx-X11/programs/Xserver/hw/dmx/Xdmx.man b/nx-X11/programs/Xserver/hw/dmx/Xdmx.man new file mode 100644 index 000000000..9c8bdea00 --- /dev/null +++ b/nx-X11/programs/Xserver/hw/dmx/Xdmx.man @@ -0,0 +1,741 @@ +.\" $XFree86$ +.\" +.\" Copyright 2001-2004 Red Hat Inc., Durham, North Carolina. +.\" All Rights Reserved. +.\" +.\" Permission is hereby granted, free of charge, to any person obtaining +.\" a copy of this software and associated documentation files (the +.\" "Software"), to deal in the Software without restriction, including +.\" without limitation on the rights to use, copy, modify, merge, +.\" publish, distribute, sublicense, and/or sell copies of the Software, +.\" and to permit persons to whom the Software is furnished to do so, +.\" subject to the following conditions: +.\" +.\" he above copyright notice and this permission notice (including the +.\" next paragraph) shall be included in all copies or substantial +.\" portions of the Software. +.\" +.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +.\" EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +.\" NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS +.\" BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +.\" ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +.\" CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +.\" SOFTWARE. +.TH Xdmx 1 __vendorversion__ +.SH NAME +Xdmx - Distributed Multi-head X server +.SH SYNOPSIS +.B Xdmx +[:display] [option ...] +.SH DESCRIPTION +.I Xdmx +is a proxy X server that uses one or more other X servers as its display +devices. It provides multi-head X functionality for displays that might +be located on different machines. +.I Xdmx +functions as a front-end X server that acts as a proxy to a set of +back-end X servers. All of the visible rendering is passed to the +back-end X servers. Clients connect to the +.I Xdmx +front-end, and everything appears as it would in a regular multi-head +configuration. If Xinerama is enabled (e.g., with +.B +xinerama +on the command line), the clients see a single large screen. +.PP +.I Xdmx +communicates to the back-end X servers using the standard X11 protocol, +and standard and/or commonly available X server extensions. +.SH OPTIONS +In addition to the normal X server options described in the +.I Xserver(1) +manual page, +.I Xdmx +accepts the following command line switches: +.TP 8 +.BI "\-display " display-name +This specifies the name(s) of the back-end X server display(s) to connect +to. This option may be specified multiple times to connect to more than +one back-end display. The first is used as screen 0, the second as screen 1, +etc. If this option is omitted, the +.B $DISPLAY +environment variable is used as the single back-end X server display. +.sp +.TP 8 +.BI "\-xinput " input-source +This specifies the source to use for XInput extension devices. The +choices are the same as for +.BR "\-input " , +described below, except that core devices on backend servers cannot be +treated as XInput extension devices. (Although extension devices on +backend and console servers are supported as extension devices under +.IR Xdmx ). +.sp +.TP 8 +.BI "\-input " input-source +This specifies the source to use for the core input devices. The choices are: +.RS +.TP 4 +.B dummy +A set of dummy core input drivers are used. These never generate any +input events. +.sp +.TP 4 +.B local +The raw keyboard and pointer from the local computer are used. A +comma-separated list of driver names can be appended. For example, to +select the example Linux keyboard and PS/2 mouse driver use: +.BR "-input local,kbd,ps2" . +The following drivers have been implemented for Linux: kbd, ms (a +two-button Microsoft mouse driver), ps2 (a PS/2 mouse driver), usb-mou +(a USB mouse driver), usb-kbd (a USB keyboard driver), and usb-oth (a +USB non-keyboard, non-mouse driver). Additional drivers may be +implemented in the future. Appropriate defaults will be used if no +comma-separated list is provided. +.sp +.TP 4 +.I display-name +If the display-name is a back-end server, then core input events are +taken from the server specified. Otherwise, a console window will be +opened on the specified display. +.sp +If the +.I display-name +is followed by ",xi" then XInput extension devices on the display will +be used as +.I Xdmx +XInput extension devices. If the +.I display-name +is followed by ",noxi" then XInput extension devices on the display will +.B not +be used as +.I Xdmx +XInput extension devices. Currently, the default is ",xi". +.sp +If the +.I display-name +is followed by ",console" and the +.I display-name +refers to a display that is used as a backend display, then a console +window will be opened on that display +.B and +that display will be treated as a backend display. Otherwise (or if +",noconsole" is used), the display will be treated purely as a backend +or a console display, as described above. +.sp +If the +.I display-name +is followed by ",windows", then outlines of the windows on the backend +will be displayed inside the console window. Otherwise (or if +",nowindows" is used), the console window will not display the outlines +of backend windows. (This option only applies to console input.) +.sp +If the +.I display-name +is followed by ",xkb", then the next 1 to 3 comma-separated parameters +will specify the keycodes, symbols, and geometry of the keyboard for +this input device. For example, ",xkb,xfree86,pc104" will specify that +the "xfree86" keycodes and the "pc104" symbols should be used to +initialize the keyboard. For an SGI keyboard, ",xkb,sgi/indy(pc102)" +might be useful. A list of keycodes, symbols, and geometries can be +found in +.IR /usr/X11R6/lib/X11/xkb . +If this option is not specified, the input device will be queried, +perhaps using the XKEYBOARD extension. +.RE +.sp +.RS +If this option isn't specified, the default input source is the first +back-end server (the one used for screen 0). The console window shows +the layout of the back-end display(s) and pointer movements and key +presses within the console window will be used as core input devices. +.sp +Several special function keys are active, depending on the input +source: +.sp +.RS +.B Ctrl-Alt-q +will terminate the +.I Xdmx +server in all modes. +.sp +.B Ctrl-Alt-g +will toggle a +server grab in console mode (a special cursor, currently a spider, is +used to indicate an active server grab). +.sp +.B Ctrl-Alt-f +will toggle fine-grain motion in console mode (a special cursor, +currently a cross hair, is used to indicate this mode). If this mode is +combined with a server grab, then the cursor will have 4 lines instead +of only 2. +.sp +.BR Ctrl-Alt-F1 " through " Ctrl-Alt-F12 +will switch to another VC in local (raw) mode. +.RE +.RE +.sp +.TP 8 +.BI "-shadowfb" +This option turns on (legacy) support for the shadow frame buffer. +.sp +.TP 8 +.BI "-noshadowfb" +This option turns off (legacy) support for the shadow frame buffer. +Note that this option has been deprecated and will be removed in the +next release. +.sp +.TP 8 +.BI "-nomulticursor" +This option turns off support for displaying multiple cursors on +overlapped back-end displays. This option is available for testing and +benchmarking purposes. +.sp +.TP 8 +.BI "-fontpath" +This option sets the +.I Xdmx +server's default font path. This option can be specified multiple times +to accommodate multiple font paths. See the +.B "FONT PATHS" +section below for very important information regarding setting the +default font path. +.sp +.TP 8 +.BI "-configfile " filename +Specify the configuration file that should be read. Note that if the +.B \-display +command-line option is used, then the configuration file will be +ignored. +.sp +.TP 8 +.BI "-config " name +Specify a configuration to use. The +.I name +will be the name following the +.B virtual +keyword in the configuration file. +.sp +.TP 8 +.BI "-stat " "interval screens" +This option enables the display of performance statistics. The interval +is in seconds. The screens is a count of the number of back-end screens +for which data is printed each interval. Specifying 0 for screens will +display data for all screens. +.sp +For each screen, the following information is printed: the screen +number, an absolute count of the number of XSync() calls made +(SyncCount), the rate of these calls during the previous interval +(Sync/s), the average round-trip time (in microseconds) of the last 10 +XSync() calls (avSync), the maximum round-trip time (in microseconds) of +the last 10 XSync calls (mxSync), the average number of XSync() requests +that were pending but not yet processed for each of the last 10 +processed XSync() calls, the maximum number of XSync() requests that +were pending but not yet processed for each of the last 10 processed +XSync() calls, and a histogram showing the distribution of the times of +all of the XSync() calls that were made during the previous interval. +.sp +(The length of the moving average and the number and value of histogram +bins are configurable at compile time in the +.B dmxstat.h +header file.) +.sp +.TP 8 +.BI "-syncbatch " interval +This option sets the +.I interval +in milliseconds for XSync() batching. An +.I interval +less than or equal to 0 will disable XSync() batching. The default +.I interval +is 100 ms. +.sp +.TP 8 +.BI "-nooffscreenopt" +This option disables the offscreen optimization. Since the lazy window +creation optimization requires the offscreen optimization to be enabled, +this option will also disable the lazy window creation optimization. +.sp +.TP 8 +.BI "-nowindowopt" +This option disables the lazy window creation optimization. +.sp +.TP 8 +.BI "-nosubdivprims" +This option disables the primitive subdivision optimization. +.sp +.TP 8 +.BI "-noxkb" +Disable use of the XKB extension for communication with the back end +displays. (Combine with +.B "-kb" +to disable all use of XKB.) +.sp +.TP 8 +.BI "-depth " int +This option sets the root window's default depth. When choosing a +default visual from those available on the back-end X server, the first +visual with that matches the depth specified is used. +.sp +This option can be combined with the +.BI "-cc" +option, which specifies the default color visual class, to force the use +of a specific depth and color class for the root window. +.sp +.TP 8 +.BI "-norender" +This option disables the RENDER extension. +.sp +.TP 8 +.BI "-noglxproxy" +This option disables GLX proxy -- the build-in GLX extension +implementation that is DMX aware. +.sp +.TP 8 +.BI "-noglxswapgroup" +This option disables the swap group and swap barrier extensions in GLX +proxy. +.sp +.TP 8 +.BI "-glxsyncswap" +This option enables synchronization after a swap buffers call by waiting +until all X protocol has been processed. When a client issues a +glXSwapBuffers request, Xdmx relays that request to each back-end X +server, and those requests are buffered along with all other protocol +requests. However, in systems that have large network buffers, this +buffering can lead to the set of back-end X servers handling the swap +buffers request asynchronously. With this option, an XSync() request is +issued to each back-end X server after sending the swap buffers request. +The XSync() requests will flush all buffered protocol (including the +swap buffers requests) and wait until the back-end X servers have +processed those requests before continuing. This option does not wait +until all GL commands have been processed so there might be previously +issued commands that are still being processed in the GL pipe when the +XSync() request returns. See the +.BI "-glxfinishswap" +option below if Xdmx should wait until the GL commands have been +processed. +.sp +.TP 8 +.BI "-glxfinishswap" +This option enables synchronization after a swap buffers call by waiting +until all GL commands have been completed. It is similar to the +.BI "-glxsyncswap" +option above; however, instead of issuing an XSync(), it issues a +glFinish() request to each back-end X server after sending the swap +buffers requests. The glFinish() request will flush all buffered +protocol requests, process both X and GL requests, and wait until all +previously called GL commands are complete before returning. +.sp +.TP 8 +.BI "-ignorebadfontpaths" +This option ignores font paths that are not available on all back-end +servers by removing the bad font path(s) from the default font path +list. If no valid font paths are left after removing the bad paths, an +error to that effect is printed in the log. +.sp +.TP 8 +.BI "-addremovescreens" +This option enables the dynamic addition and removal of screens, which +is disabled by default. Note that GLXProxy and Render do not yet +support dynamic addition and removal of screens, and must be disabled +via the +.BI "-noglxproxy" +and +.BI "-norender" +command line options described above. +.sp +.TP 8 +.BI "-param" +This option specifies parameters on the command line. Currently, only +parameters dealing with XKEYBOARD configuration are supported. These +parameters apply only to the core keyboard. Parameter values are +installation-dependent. Please see +.I /usr/X11R6/lib/X11/xkb +or a similar directory for complete information. +.RS +.TP 8 +.B XkbRules +Defaults to "xfree86". Other values may include "sgi" and "sun". +.sp +.TP 8 +.B XkbModel +Defaults to "pc101". When used with "xfree86" rules, other values may +include "pc102", "pc104", "pc105", "microsoft", and many others. When +used with "sun" rules, other values may include "type4" and "type5". +.sp +.TP 8 +.B XkbLayout +Defaults to "us". Other country codes and "dvorak" are usually +available. +.sp +.TP 8 +.B XkbVariant +Defaults to "". +.sp +.TP 8 +.B XkbOptions +Defaults to "". +.RE +.SH "CONFIGURATION FILE GRAMMAR" +The following words and tokens are reserved: +.RS +.B virtual +.B display +.B wall +.B option +.B param +.B { +.B } +.B ; +.B # +.RE +.PP +Comments start with a +.B # +mark and extend to the end of the line. They may appear anywhere. If a +configuration file is read into +.BR xdmxconfig , +the comments in that file will be preserved, but will not be editable. +.PP +The grammar is as follows: +.RS +virtual-list ::= [ virtual-list ] | virtual + +virtual ::= +.B virtual +[ name ] [ dim ] +.B { +dw-list +.B } + +dw-list ::= [ dw-list ] | dw + +dw ::= display | wall | option + +display ::= +.B display +name [ geometry ] [ / geometry ] [ origin ] +.B ; + +wall ::= +.B wall +[ dim ] [ dim ] name-list +.B ; + +option ::= +.B option +name-list +.B ; + +param ::= +.B param +name-list +.B ; + +param ::= +.B param { +param-list +.B } + +param-list ::= [ param-list ] | name-list +.B ; + +name-list ::= [ name-list ] | name + +name ::= string | double-quoted-string + +dim ::= integer +.B x +integer + +geometry ::= [ integer +.B x +integer ] [ signed-integer signed-integer ] + +origin ::= +.B @ +integer +.B x +integer +.RE +.PP +The name following +.B virtual +is used as an identifier for the configuration, and may be passed to +.B Xdmx +using the +.B \-config +command line option. The name of a display should be standard X display +name, although no checking is performed (e.g., "machine:0"). +.PP +For names, double quotes are optional unless the name is reserved or +contains spaces. +.PP +The first dimension following +.B wall +is the dimension for tiling (e.g., 2x4 or 4x4). The second dimension +following +.B wall +is the dimension of each display in the wall (e.g., 1280x1024). +.PP +The first geometry following +.B display +is the geometry of the screen window on the backend server. The second +geometry, which is always preceeded by a slash, is the geometry of the +root window. By default, the root window has the same geometry as the +screen window. +.PP +The +.B option +line can be used to specify any command-line options (e.g., +.BR \-input ). +(It cannot be used to specify the name of the front-end display.) The +option line is processed once at server startup, just line command line +options. This behavior may be unexpected. +.SH "CONFIGURATION FILE EXAMPLES" +Two displays being used for a desktop may be specified in any of the +following formats: +.RS +.nf +virtual example0 { + display d0:0 1280x1024 @0x0; + display d1:0 1280x1024 @1280x0; +} +.sp +virtual example1 { + display d0:0 1280x1024; + display d1:0 @1280x0; +} +.sp +virtual example2 { + display "d0:0"; + display "d1:0" @1280x0; +} +.sp +virtual example3 { wall 2x1 d0:0 d1:0; } +.fi +.RE +A 4x4 wall of 16 total displays could be specified as follows (if no +tiling dimension is specified, an approximate square is used): +.RS +.nf +virtual example4 { + wall d0:0 d1:0 d2:0 d3:0 + d4:0 d5:0 d6:0 d7:0 + d8:0 d9:0 da:0 db:0 + dc:0 dd:0 de:0 df:0; +} +.fi +.RE +.SH "FONT PATHS" +The font path used by the +.I Xdmx +front-end server will be propagated to each back-end server,which +requires that each back-end server have access to the exact same font +paths as the front-end server. This can be most easily handled by +either using a font server (e.g., xfs) or by remotely mounting the font +paths on each back-end server, and then setting the +.I Xdmx +server's default font path with the +-I "-fontpath" +command line option described above. +.PP +For example, if you specify a font path with the following command line: +.RS +Xdmx :1 -display d0:0 -fontpath /usr/fonts/75dpi/ -fontpath /usr/fonts/Type1/ +xinerama +.RE +Then, /usr/fonts/75dpi/ and /usr/fonts/Type1/ must be valid font paths +on the +.I Xdmx +server and all back-end server, which is d0 in this example. +.PP +Font servers can also be specified with the +.I "-fontpath" +option. For example, let's assume that a properly configured font +server is running on host d0. Then, the following command line +.RS +Xdmx :1 -display d0:0 -display d1:0 -fontpath tcp/d0:7100 +xinerama +.RE +will initialize the front-end +.I Xdmx +server and each of the back-end servers to use the font server on d0. +.PP +Some fonts might not be supported by either the front-end or the +back-end servers. For example, let's assume the front-end +.I Xdmx +server includes support Type1 fonts, but one of the back-end servers +does not. Let's also assume that the default font path for +.I Xdmx +includes Type1 fonts in its font path. Then, when +.I Xdmx +initializes the default font path to load the default font, the font +path that includes Type1 fonts (along with the other default font paths +that are used by the +.I Xdmx +server) is sent to the back-end server that cannot handle Type1 fonts. +That back-end server then rejects the font path and sends an error back +to the +.I Xdmx +server. +.I Xdmx +then prints an error message and exits because it failed to set the +default font path and was unable load the default font. +.PP +To fix this error, the offending font path must be removed from the +default font path by using a different +.I "-fontpath" +command line option. +.PP +The +.I "-fontpath" +option can also be added to the configuration file as described above. +.SH "COMMAND-LINE EXAMPLES" +The back-end machines are d0 and d1, core input is from the pointer and +keyboard attached to d0, clients will refer to :1 when opening windows: +.RS +Xdmx :1 -display d0:0 -display d1:0 +xinerama +.RE +.PP +As above, except with core input from d1: +.RS +Xdmx :1 -display d0:0 -display d1:0 -input d1:0 +xinerama +.RE +.PP +As above, except with core input from a console window on the local +display: +.RS +Xdmx :1 -display d0:0 -display d1:0 -input :0 +xinerama +.RE +.PP +As above, except with core input from the local keyboard and mouse: +.RS +Xdmx :1 -display d0:0 -display d1:0 -input local,kbd,ps2 +xinerama +.RE +Note that local input can be used under Linux while another X session is +running on :0 (assuming the user can access the Linux console tty and +mouse devices): a new (blank) VC will be used for keyboard input on the +local machine and the Ctrl-Alt-F* sequence will be available to change +to another VC (possibly back to another X session running on the local +machine). Using Ctrl-Alt-Backspace on the blank VC will terminate the +Xdmx session and return to the original VC. +.PP +This example uses the configuration file shown in the previous section: +.RS +Xdmx :1 -input :0 +xinerama -configfile filename -config example2 +.RE +With this configuration file line: +.RS +option -input :0 +xinerama; +.RE +the command line can be shortened to: +.RS +Xdmx :1 -configfile filename -config example2 +.RE +.SH "USING THE USB DEVICE DRIVERS" +.P +The USB device drivers use the devices called +.IR /dev/input/event0 ", " /dev/input/event1 ", etc." +under Linux. These devices are driven using the +.I evdev +Linux kernel module, which is part of the hid suite. Please note that +if you load the +.I mousedev +or +.I kbddev +Linux kernel modules, then USB devices will appear as core Linux input +devices and you will not be able to select between using the device only +as an +.I Xdmx +core device or an +.I Xdmx +XInput extension device. Further, you may be unable to unload the +.I mousedev +Linux kernel module if +.I XFree86 +is configured to use +.I /dev/input/mice +as an input device (this is quite helpful for laptop users and is set up +by default under some Linux distributions, but should be changed if USB +devices are to be used with +.IR Xdmx ). +.PP +The USB device drivers search through the Linux devices for the first +mouse, keyboard, or non-mouse-non-keyboard Linux device and use that +device. +.SH "KEYBOARD INITIALIZATION" +.PP +If +.I Xdmx +was invoked with +.I \-xkb +or was +.B not +compiled to use the XKEYBOARD extension, then a keyboard on a backend or +console will be initialized using the map that the host X server +provides. +.PP +If the XKEYBOARD extension is used for both +.I Xdmx +and the host X server for the keyboard (i.e., the backend or console X +server), then the type of the keyboard will +be obtained from the host X server and the keyboard under +.I Xdmx +will be initialized with that information. Otherwise, the default type +of keyboard will be initialized. In both cases, the map from the host X +server will +.B not +be used. This means that different initial behavior may be noted with +and without XKEYBOARD. Consistent and expected results will be obtained +by running XKEYBOARD on all servers and by avoiding the use of +.I xmodmap +on the backend or console X servers prior to starting +.IR Xdmx . +.PP +If +.I \-xkbmap +is specified on the +.I Xdmx +command line, then that map will currently be used for all keyboards. +.SH "MULTIPLE CORE KEYBOARDS" +X was not designed to support multiple core keyboards. However, +.I Xdmx +provides some support for multiple core keyboards. Best results will be +obtained if all of the keyboards are of the same type and are using the +same keyboard map. Because the X server passes raw key code information +to the X client, key symbols for keyboards with different key maps would +be different if the key code for each keyboard was sent without +translation to the client. Therefore, +.I Xdmx +will attempt to translate the key code from a core keyboard to the key +code for the key with the same key symbol of the +.B first +core keyboard that was loaded. If the key symbol appears in both maps, +the results will be expected. Otherwise, the second core keyboard will +return a NoSymbol key symbol for some keys that would have been +translated if it was the first core keyboard. +.ig +.SH ENVIRONMENT +.. +.ig +.SH FILES +.. +.SH "SEE ALSO" +.BR DMX "(3X), " X "(__miscmansuffix__), " Xserver "(1), " xdmxconfig "(1), " +.BR vdltodmx "(1), " xfs "(1), " xkbcomp (1) +.SH AUTHORS +Kevin E. Martin +.I , +David H. Dawes +.I , +and +Rickard E. (Rik) Faith +.IR . +.PP +Portions of +.I Xdmx +are based on code from The XFree86 Project +.RI ( http://www.xfree86.org ) +and X.Org +.RI ( http://www.x.org ). diff --git a/nx-X11/programs/Xserver/hw/dmx/config/Canvas.c b/nx-X11/programs/Xserver/hw/dmx/config/Canvas.c new file mode 100644 index 000000000..4dccd7382 --- /dev/null +++ b/nx-X11/programs/Xserver/hw/dmx/config/Canvas.c @@ -0,0 +1,160 @@ +/* $XFree86$ */ +/* + * Copyright 1987, 1998 The Open Group + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of The Open Group shall not be + * used in advertising or otherwise to promote the sale, use or other dealings + * in this Software without prior written authorization from The Open Group. + */ + +/* + * Copyright 2002 Red Hat Inc., Durham, North Carolina. + * + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation on the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice (including the + * next paragraph) shall be included in all copies or substantial + * portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +/* + * Authors: + * Rickard E. (Rik) Faith + * + * This file was originally taken from xc/lib/Xaw/Template.c + */ + +#include +#include +#include "CanvasP.h" + +static void CanvasInitialize(Widget request, Widget w, + ArgList args, Cardinal *num_args) +{ +} + +static void CanvasExpose(Widget w, XEvent *event, Region region) +{ + CanvasExposeDataRec data; + + data.w = w; + data.event = event; + data.region = region; + + if (!XtIsRealized(w)) return; + XtCallCallbacks(w, XtNcanvasExposeCallback, (XtPointer)&data); +} + +static void CanvasResize(Widget w) +{ + if (!XtIsRealized(w)) return; + XtCallCallbacks(w, XtNcanvasResizeCallback, (XtPointer)w); +} + +static void CanvasAction(Widget w, XEvent *event, + String *params, Cardinal *num_params) +{ + XtCallCallbacks(w, XtNcallback, (XtPointer)event); +} + +#define offset(field) XtOffsetOf(CanvasRec, canvas.field) +static XtResource resources[] = { + { XtNcallback, XtCCallback, XtRCallback, + sizeof(XtCallbackList), offset(input_callback), XtRCallback, NULL }, + { XtNcanvasExposeCallback, XtCcanvasExposeCallback, XtRCallback, + sizeof(XtCallbackList), offset(expose_callback), XtRCallback, NULL }, + { XtNcanvasResizeCallback, XtCcanvasResizeCallback, XtRCallback, + sizeof(XtCallbackList), offset(resize_callback), XtRCallback, NULL }, +}; +#undef offset + +static XtActionsRec actions[] = +{ + {"canvas", CanvasAction}, +}; + +static char translations[] = +": canvas()\n\ +: canvas()\n\ +: canvas()\n\ +: canvas()\n\ +" +; + +#define Superclass (&widgetClassRec) +CanvasClassRec canvasClassRec = { + /* core */ + { + (WidgetClass)Superclass, /* superclass */ + "Canvas", /* class_name */ + sizeof(CanvasRec), /* widget_size */ + NULL, /* class_initialize */ + NULL, /* class_part_initialize */ + False, /* class_inited */ + CanvasInitialize, /* initialize */ + NULL, /* initialize_hook */ + XtInheritRealize, /* realize */ + actions, /* actions */ + XtNumber(actions), /* num_actions */ + resources, /* resources */ + XtNumber(resources), /* num_resources */ + NULLQUARK, /* xrm_class */ + True, /* compress_motion */ + True, /* compress_exposure */ + True, /* compress_enterleave */ + False, /* visible_interest */ + NULL, /* destroy */ + CanvasResize, /* resize */ + CanvasExpose, /* expose */ + NULL, /* set_values */ + NULL, /* set_values_hook */ + XtInheritSetValuesAlmost, /* set_values_almost */ + NULL, /* get_values_hook */ + NULL, /* accept_focus */ + XtVersion, /* version */ + NULL, /* callback_private */ + translations, /* tm_table */ + XtInheritQueryGeometry, /* query_geometry */ + XtInheritDisplayAccelerator, /* display_accelerator */ + NULL, /* extension */ + }, + /* canvas */ + { + NULL, /* extension */ + } +}; + +WidgetClass canvasWidgetClass = (WidgetClass)&canvasClassRec; diff --git a/nx-X11/programs/Xserver/hw/dmx/config/Canvas.h b/nx-X11/programs/Xserver/hw/dmx/config/Canvas.h new file mode 100644 index 000000000..a36851a6d --- /dev/null +++ b/nx-X11/programs/Xserver/hw/dmx/config/Canvas.h @@ -0,0 +1,56 @@ +/* $XFree86$ */ +/* + +Copyright 1987, 1998 The Open Group +Copyright 2002 Red Hat Inc., Durham, North Carolina. + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of The Open Group shall not be +used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from The Open Group. + +*/ + +/* + * Authors: + * Rickard E. (Rik) Faith + * + * This file was originally taken from xc/lib/Xaw/Template.h + */ + +#ifndef _Canvas_h +#define _Canvas_h + +#include + +#define XtNcanvasExposeCallback "canvasExposeCallback" +#define XtCcanvasExposeCallback "CanvasExposeCallback" +#define XtNcanvasResizeCallback "canvasResizeCallback" +#define XtCcanvasResizeCallback "CanvasResizeCallback" + +typedef struct _CanvasClassRec *CanvasWidgetClass; +typedef struct _CanvasRec *CanvasWidget; +extern WidgetClass canvasWidgetClass; + +typedef struct _CanvasExposeDataRec { + Widget w; + XEvent *event; + Region region; +} CanvasExposeDataRec, *CanvasExposeDataPtr; + +#endif /* _Canvas_h */ diff --git a/nx-X11/programs/Xserver/hw/dmx/config/CanvasP.h b/nx-X11/programs/Xserver/hw/dmx/config/CanvasP.h new file mode 100644 index 000000000..98f95b94e --- /dev/null +++ b/nx-X11/programs/Xserver/hw/dmx/config/CanvasP.h @@ -0,0 +1,66 @@ +/* $XFree86$ */ +/* + +Copyright 1987, 1998 The Open Group +Copyright 2002 Red Hat Inc., Durham, North Carolina. + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of The Open Group shall not be +used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from The Open Group. + +*/ + +/* + * Authors: + * Rickard E. (Rik) Faith + * + * This file was originally taken from xc/lib/Xaw/TemplateP.h + */ + +#ifndef _CanvasP_h +#define _CanvasP_h + +#include "Canvas.h" + +/* include superclass private header file */ +#include + +typedef struct { + XtPointer extension; +} CanvasClassPart; + +typedef struct _CanvasClassRec { + CoreClassPart core_class; + CanvasClassPart canvas_class; +} CanvasClassRec; + +extern CanvasClassRec canvasClassRec; + +typedef struct { + XtCallbackList input_callback; + XtCallbackList expose_callback; + XtCallbackList resize_callback; +} CanvasPart; + +typedef struct _CanvasRec { + CorePart core; + CanvasPart canvas; +} CanvasRec; + +#endif /* _CanvasP_h */ diff --git a/nx-X11/programs/Xserver/hw/dmx/config/Imakefile b/nx-X11/programs/Xserver/hw/dmx/config/Imakefile new file mode 100644 index 000000000..08039c03e --- /dev/null +++ b/nx-X11/programs/Xserver/hw/dmx/config/Imakefile @@ -0,0 +1,101 @@ +XCOMM $XFree86$ + +#include +#include + +YFLAGS = -d + +LIBSRCS = parser.c scanner.c dmxparse.c dmxprint.c dmxcompat.c dmxconfig.c +LIBOBJS = parser.o scanner.o dmxparse.o dmxprint.o dmxcompat.o dmxconfig.o + +#if !BuildServersOnly +CONFIGSRCS = xdmxconfig.c dmxlog.c Canvas.c +CONFIGOBJS = xdmxconfig.o dmxlog.o Canvas.o + +COMPATSRCS = vdltodmx.c +COMPATOBJS = vdltodmx.o + +TESTSRCS = dmxtodmx.c +TESTOBJS = dmxtodmx.o +#endif + +SRCS = $(LIBSRCS) $(CONFIGSRCS) $(COMPATSRCS) $(TESTSRCS) +OBJS = $(LIBOBJS) $(CONFIGOBJS) $(COMPATOBJS) $(TESTOBJS) + +#if !BuildServersOnly +EXES = xdmxconfig vdltodmx dmxtodmx +#endif + +LOCAL_LIBRARIES = -L. -ldmxconfig + +#include + +INCLUDES = -I. -I.. -I$(XBUILDINCDIR) -I$(FONTINCSRC) -I../../../mi \ + -I../../../include -I../../../render -I$(EXTINCSRC) + +DEFINES = $(OS_DEFINES) $(EXT_DEFINES) -DDMX_LOG_STANDALONE $(DMX_DEFINES) + +all:: + +LexFile(scanner) +YaccFile(parser,$(YFLAGS)) + +#if HasGcc3 +XCOMM These rules remove some of the default warnings and, therefore, the +XCOMM clutter from the compiler output. Only do this for GCC 3, since the +XCOMM undef warning was added in 2.8. (The warnings are harmless, so be +XCOMM conservative in their removal.) +SpecialCObjectRule(parser,parser.h,-Wno-undef) +SpecialCObjectRule(scanner,parser.h,-Wno-undef -Wno-unused-function -Wno-unused-label -Wno-unused-variable) +#endif + +NormalLibraryObjectRule() +NormalLibraryTarget(dmxconfig,$(LIBOBJS)) + +#if !BuildServersOnly +NormalProgramTarget(xdmxconfig,$(CONFIGOBJS),\ + libdmxconfig.a XawClientDepLibs $(DEPXTOOLLIB),\ + $(LOCAL_LIBRARIES) XawClientLibs $(XTOOLLIB),NullParameter) +AllTarget(ProgramTargetName(xdmxconfig)) + +NormalProgramTarget(vdltodmx,$(COMPATOBJS),libdmxconfig.a,\ + $(LOCAL_LIBRARIES),NullParameter) +AllTarget(ProgramTargetName(vdltodmx)) + +NormalProgramTarget(dmxtodmx,$(TESTOBJS),libdmxconfig.a,\ + $(LOCAL_LIBRARIES),NullParameter) +AllTarget(ProgramTargetName(dmxtodmx)) + +LinkSourceFile(dmxlog.c,..) + +InstallProgram(dmxtodmx,$(BINDIR)) +InstallProgram(vdltodmx,$(BINDIR)) +InstallProgram(xdmxconfig,$(BINDIR)) + +InstallManPage(dmxtodmx,$(MANDIR)) +InstallManPage(vdltodmx,$(MANDIR)) +InstallManPage(xdmxconfig,$(MANDIR)) +#endif + +DependTarget() + +#if !BuildServersOnly +test: $(EXES) + @for i in test-*.in; do \ + b=`echo $$i | sed 's,.in$$,,'` \ + export b; \ + (./dmxtodmx < $$i > $$b.tmp 2>&1; exit 0); \ + if cmp -s ./$$b.out ./$$b.tmp; \ + then echo PASSED $$b; rm -f $$b.tmp; \ + else echo "FAILED $$b **********"; \ + fi \ + done + +test-update: + @for i in test-*.in; do \ + b=`echo $$i | sed 's,.in$$,,'` \ + export b; \ + echo Writing $$b.out; \ + (./dmxtodmx < $$i > $$b.out 2>&1; exit 0) \ + done +#endif diff --git a/nx-X11/programs/Xserver/hw/dmx/config/TODO b/nx-X11/programs/Xserver/hw/dmx/config/TODO new file mode 100644 index 000000000..2998ff4a0 --- /dev/null +++ b/nx-X11/programs/Xserver/hw/dmx/config/TODO @@ -0,0 +1,7 @@ +Fri May 31 13:20:17 2002 + +1) Sanitize values from input boxes. + +2) Add canvas colors to cavas widget resources or to command-line options. + +3) Add ability to edit option line(s) and wall. diff --git a/nx-X11/programs/Xserver/hw/dmx/config/dmxcompat.c b/nx-X11/programs/Xserver/hw/dmx/config/dmxcompat.c new file mode 100644 index 000000000..3681e8aa2 --- /dev/null +++ b/nx-X11/programs/Xserver/hw/dmx/config/dmxcompat.c @@ -0,0 +1,237 @@ +/* $XFree86$ */ +/* + * Copyright 2002 Red Hat Inc., Durham, North Carolina. + * + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation on the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice (including the + * next paragraph) shall be included in all copies or substantial + * portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +/* + * Authors: + * Rickard E. (Rik) Faith + */ + +/** \file + * This file provides some compatibility support for reading VDL files + * that are used by xmovie + * (http://www.llnl.gov/icc/sdd/img/xmovie/xmovie.shtml). + * + * This file is not used by the DMX server. + */ + +#ifdef HAVE_DMX_CONFIG_H +#include +#endif + +#include "dmxconfig.h" +#include "dmxparse.h" +#include "dmxcompat.h" +#include "parser.h" +#include +#include +#include +#include + +static int dmxVDLReadLine(FILE *str, char *buf, int len) +{ + if (fgets(buf, len, str)) return strlen(buf); + return 0; +} + +static int dmxVDLCount(const char *buf) +{ + return strtol(buf, NULL, 10); +} + +static void dmxVDLVirtualEntry(const char *buf, + char *name, int *len, + int *x, int *y) +{ + char *end; + const char *s; + char *d; + int start; + + *x = strtol(buf, &end, 10); + *y = strtol(end, &end, 10); + + for (s = end, d = name, start = 1; *s && *s != '['; ++s) { + if (start && isspace(*s)) continue; + *d++ = *s; + start = 0; + } + *d = '\0'; + while (d > name && isspace(d[-1])) *--d = '\0'; /* remove trailing space */ + *len = strlen(name); +} + +static void dmxVDLDisplayEntry(const char *buf, + char *name, int *len, + int *x, int *y, + int *xoff, int *yoff, + int *xorig, int *yorig) +{ + const char *pt; + char *end; + + pt = strchr(buf, ' '); + strncpy(name, buf, pt-buf); + name[pt-buf] = '\0'; + *len = strlen(name); + + *x = strtol(pt, &end, 10); + *y = strtol(end, &end, 10); + *xorig = strtol(end, &end, 10); + *yorig = strtol(end, &end, 10); + *xoff = strtol(end, &end, 10); + *yoff = strtol(end, NULL, 10); +} + +/** Read from the VDL format \a filename and return a newly allocated \a + * DMXConfigEntryPtr */ +DMXConfigEntryPtr dmxVDLRead(const char *filename) +{ + FILE *str; + char buf[2048]; /* RATS: Use ok */ + char *pt; + int lineno = 0; + DMXConfigEntryPtr entry = NULL; + DMXConfigVirtualPtr virtual = NULL; + DMXConfigSubPtr sub = NULL; + DMXConfigDisplayPtr display = NULL; + DMXConfigFullDimPtr fdim = NULL; + int vcount = 0; + int dcount = 0; + int icount = 0; + int x, y, xoff, yoff, xorig, yorig; + char name[2048]; /* RATS: Use ok */ + const char *tmp; + int len; + enum { + simulateFlag, + virtualCount, + virtualEntry, + displayCount, + displayEntry, + ignoreCount, + ignoreEntry + } state = simulateFlag; + + if (!filename) str = stdin; + else str = fopen(filename, "r"); + if (!str) return NULL; + + while (dmxVDLReadLine(str, buf, sizeof(buf))) { + DMXConfigCommentPtr comment = NULL; + + ++lineno; + for (pt = buf; *pt; pt++) + if (*pt == '\r' || *pt == '\n') { + *pt = '\0'; + break; + } + if (buf[0] == '#') { + tmp = dmxConfigCopyString(buf + 1, strlen(buf + 1)); + comment = dmxConfigCreateComment(T_COMMENT, lineno, tmp); + entry = dmxConfigAddEntry(entry, dmxConfigComment, comment, NULL); + continue; + } + switch (state) { + case simulateFlag: + state = virtualCount; + break; + case virtualCount: + vcount = dmxVDLCount(buf); + state = virtualEntry; + break; + case virtualEntry: + len = sizeof(name); + dmxVDLVirtualEntry(buf, name, &len, &x, &y); + tmp = dmxConfigCopyString(name, len); + virtual = dmxConfigCreateVirtual(NULL, + dmxConfigCreateString(T_STRING, + lineno, + NULL, + tmp), + dmxConfigCreatePair(T_DIMENSION, + lineno, + NULL, + x, y, 0, 0), + NULL, NULL, NULL); + state = displayCount; + break; + case displayCount: + dcount = dmxVDLCount(buf); + state = displayEntry; + break; + case displayEntry: + dmxVDLDisplayEntry(buf, name, &len, &x, &y, &xoff, &yoff, + &xorig, &yorig); + tmp = dmxConfigCopyString(name, len); + fdim = dmxConfigCreateFullDim( + dmxConfigCreatePartDim( + dmxConfigCreatePair(T_DIMENSION, + lineno, + NULL, + x, y, 0, 0), + dmxConfigCreatePair(T_OFFSET, + lineno, + NULL, + xoff, yoff, + xoff, yoff)), + NULL); + display = dmxConfigCreateDisplay(NULL, + dmxConfigCreateString(T_STRING, + lineno, + NULL, + tmp), + fdim, + dmxConfigCreatePair(T_ORIGIN, + lineno, + NULL, + xorig, yorig, + 0, 0), + NULL); + sub = dmxConfigAddSub(sub, dmxConfigSubDisplay(display)); + if (!--dcount) { + state = ignoreCount; + virtual->subentry = sub; + entry = dmxConfigAddEntry(entry, + dmxConfigVirtual, + NULL, + virtual); + virtual = NULL; + sub = NULL; + } + break; + case ignoreCount: + icount = dmxVDLCount(buf); + state = ignoreEntry; + break; + case ignoreEntry: + if (!--icount) state = virtualEntry; + break; + } + } + return entry; +} diff --git a/nx-X11/programs/Xserver/hw/dmx/config/dmxcompat.h b/nx-X11/programs/Xserver/hw/dmx/config/dmxcompat.h new file mode 100644 index 000000000..416ec7873 --- /dev/null +++ b/nx-X11/programs/Xserver/hw/dmx/config/dmxcompat.h @@ -0,0 +1,45 @@ +/* $XFree86$ */ +/* + * Copyright 2002 Red Hat Inc., Durham, North Carolina. + * + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation on the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice (including the + * next paragraph) shall be included in all copies or substantial + * portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +/* + * Authors: + * Rickard E. (Rik) Faith + * + */ + +/** \file + * Interface to VDL compatibility support. \see dmxcompat.c + * + * This file is not used by the DMX server. + */ + +#ifndef _DMXCOMPAT_H_ +#define _DMXCOMPAT_H_ + +extern DMXConfigEntryPtr dmxVDLRead(const char *filename); +#endif diff --git a/nx-X11/programs/Xserver/hw/dmx/config/dmxconfig.c b/nx-X11/programs/Xserver/hw/dmx/config/dmxconfig.c new file mode 100644 index 000000000..353ce11db --- /dev/null +++ b/nx-X11/programs/Xserver/hw/dmx/config/dmxconfig.c @@ -0,0 +1,499 @@ +/* $XFree86$ */ +/* + * Copyright 2002-2003 Red Hat Inc., Durham, North Carolina. + * + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation on the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice (including the + * next paragraph) shall be included in all copies or substantial + * portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +/* + * Authors: + * Rickard E. (Rik) Faith + * + */ + +/** \file + * Provides interface for reading DMX configuration files and for + * combining that information with command-line configuration parameters. */ + + +#ifdef HAVE_DMX_CONFIG_H +#include +#endif + +#include "dmx.h" +#include "dmxinput.h" +#include "dmxconfig.h" +#include "dmxparse.h" +#include "dmxlog.h" +#include "dmxcb.h" +#include "dmxstat.h" +#include "parser.h" + +extern int yyparse(void); +extern FILE *yyin; + +static char *dmxXkbRules; +static char *dmxXkbModel; +static char *dmxXkbLayout; +static char *dmxXkbVariant; +static char *dmxXkbOptions; + +/** Stores lists of configuration information. */ +typedef struct DMXConfigListStruct { + const char *name; + struct DMXConfigListStruct *next; +} DMXConfigList, *DMXConfigListPtr; + +/** This stucture stores the parsed configuration information. */ +typedef struct DMXConfigCmdStruct { + const char *filename; + const char *config; + DMXConfigList *displays; + DMXConfigList *inputs; + DMXConfigList *xinputs; +} DMXConfigCmd, *DMXConfigCmdPtr; + +DMXConfigEntryPtr dmxConfigEntry; +static DMXConfigCmd dmxConfigCmd; + +static int dmxDisplaysFromCommandLine; + +/** Make a note that \a display is the name of an X11 display that + * should be initialized as a backend (output) display. Called from + * #ddxProcessArgument. */ +void dmxConfigStoreDisplay(const char *display) +{ + DMXConfigListPtr entry = malloc(sizeof(*entry)); + entry->name = strdup(display); + entry->next = NULL; + if (!dmxConfigCmd.displays) dmxConfigCmd.displays = entry; + else { + DMXConfigList *pt; + for (pt = dmxConfigCmd.displays; pt->next; pt = pt->next); + if (!pt) + dmxLog(dmxFatal, "dmxConfigStoreDisplay: end of list non-NULL\n"); + pt->next = entry; + } + ++dmxDisplaysFromCommandLine; +} + +/** Make a note that \a input is the name of an X11 display that should + * be used for input (either a backend or a console input device). */ +void dmxConfigStoreInput(const char *input) +{ + DMXConfigListPtr entry = malloc(sizeof(*entry)); + entry->name = strdup(input); + entry->next = NULL; + if (!dmxConfigCmd.inputs) dmxConfigCmd.inputs = entry; + else { + DMXConfigList *pt; + for (pt = dmxConfigCmd.inputs; pt->next; pt = pt->next); + if (!pt) + dmxLog(dmxFatal, "dmxConfigStoreInput: end of list non-NULL\n"); + pt->next = entry; + } +} + +/** Make a note that \a input is the name of an X11 display that should + * be used for input from XInput extension devices. */ +void dmxConfigStoreXInput(const char *input) +{ + DMXConfigListPtr entry = malloc(sizeof(*entry)); + entry->name = strdup(input); + entry->next = NULL; + if (!dmxConfigCmd.xinputs) dmxConfigCmd.xinputs = entry; + else { + DMXConfigList *pt; + for (pt = dmxConfigCmd.xinputs; pt->next; pt = pt->next); + if (!pt) + dmxLog(dmxFatal, "dmxConfigStoreXInput: end of list non-NULL\n"); + pt->next = entry; + } +} + +/** Make a note that \a file is the configuration file. */ +void dmxConfigStoreFile(const char *file) +{ + if (dmxConfigCmd.filename) + dmxLog(dmxFatal, "Only one -configfile allowed\n"); + dmxConfigCmd.filename = strdup(file); +} + +/** Make a note that \a config should be used as the configuration for + * current instantiation of the DMX server. */ +void dmxConfigStoreConfig(const char *config) +{ + if (dmxConfigCmd.config) dmxLog(dmxFatal, "Only one -config allowed\n"); + dmxConfigCmd.config = strdup(config); +} + +static int dmxConfigReadFile(const char *filename, int debug) +{ + FILE *str; + + if (!(str = fopen(filename, "r"))) return -1; + dmxLog(dmxInfo, "Reading configuration file \"%s\"\n", filename); + yyin = str; + yydebug = debug; + yyparse(); + fclose(str); + return 0; +} + +static const char *dmxConfigMatch(const char *target, DMXConfigEntryPtr entry) +{ + DMXConfigVirtualPtr v = entry->virtual; + const char *name = NULL; + + if (v && v->name) name = v->name; + + if (v && !dmxConfigCmd.config) return v->name ? v->name : ""; + if (!name) return NULL; + if (!strcmp(name, target)) return name; + return NULL; +} + +static DMXScreenInfo *dmxConfigAddDisplay(const char *name, + int scrnWidth, int scrnHeight, + int scrnX, int scrnY, + int scrnXSign, int scrnYSign, + int rootWidth, int rootHeight, + int rootX, int rootY, + int rootXSign, int rootYSign) +{ + DMXScreenInfo *dmxScreen; + + if (!(dmxScreens = realloc(dmxScreens, + (dmxNumScreens+1) * sizeof(*dmxScreens)))) + dmxLog(dmxFatal, + "dmxConfigAddDisplay: realloc failed for screen %d (%s)\n", + dmxNumScreens, name); + + dmxScreen = &dmxScreens[dmxNumScreens]; + memset(dmxScreen, 0, sizeof(*dmxScreen)); + dmxScreen->name = name; + dmxScreen->index = dmxNumScreens; + dmxScreen->scrnWidth = scrnWidth; + dmxScreen->scrnHeight = scrnHeight; + dmxScreen->scrnX = scrnX; + dmxScreen->scrnY = scrnY; + dmxScreen->scrnXSign = scrnXSign; + dmxScreen->scrnYSign = scrnYSign; + dmxScreen->rootWidth = rootWidth; + dmxScreen->rootHeight = rootHeight; + dmxScreen->rootX = rootX; + dmxScreen->rootY = rootY; + dmxScreen->stat = dmxStatAlloc(); + ++dmxNumScreens; + return dmxScreen; +} + +DMXInputInfo *dmxConfigAddInput(const char *name, int core) +{ + DMXInputInfo *dmxInput; + + if (!(dmxInputs = realloc(dmxInputs, + (dmxNumInputs+1) * sizeof(*dmxInputs)))) + dmxLog(dmxFatal, + "dmxConfigAddInput: realloc failed for input %d (%s)\n", + dmxNumInputs, name); + + dmxInput = &dmxInputs[dmxNumInputs]; + + memset(dmxInput, 0, sizeof(*dmxInput)); + dmxInput->name = name; + dmxInput->inputIdx = dmxNumInputs; + dmxInput->scrnIdx = -1; + dmxInput->core = core; + ++dmxNumInputs; + return dmxInput; +} + +static void dmxConfigCopyFromDisplay(DMXConfigDisplayPtr d) +{ + DMXScreenInfo *dmxScreen; + + dmxScreen = dmxConfigAddDisplay(d->name, + d->scrnWidth, d->scrnHeight, + d->scrnX, d->scrnY, + d->scrnXSign, d->scrnYSign, + d->rootWidth, d->rootHeight, + d->rootX, d->rootY, + d->rootXSign, d->rootXSign); + dmxScreen->where = PosAbsolute; + dmxScreen->whereX = d->rootXOrigin; + dmxScreen->whereY = d->rootYOrigin; +} + +static void dmxConfigCopyFromWall(DMXConfigWallPtr w) +{ + DMXConfigStringPtr pt; + DMXScreenInfo *dmxScreen; + int edge = dmxNumScreens; + int last = dmxNumScreens; + + if (!w->xwall && !w->ywall) { /* Try to make it square */ + int count; + for (pt = w->nameList, count = 0; pt; pt = pt->next) ++count; + w->xwall = sqrt(count) + .5; + } + + for (pt = w->nameList; pt; pt = pt->next) { + dmxScreen = dmxConfigAddDisplay(pt->string, w->width, w->height, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + if (pt == w->nameList) { /* Upper left */ + dmxScreen->where = PosAbsolute; + dmxScreen->whereX = 0; + dmxScreen->whereY = 0; + } else if (w->xwall) { /* Tile left to right, then top to bottom */ + if (!((dmxNumScreens-1) % w->xwall)) { + dmxScreen->where = PosBelow; + dmxScreen->whereRefScreen = edge; + edge = dmxNumScreens-1; + } else { + dmxScreen->where = PosRightOf; + dmxScreen->whereRefScreen = last; + } + } else { /* Tile top to bottom, then left to right */ + if (!((dmxNumScreens-1) % w->ywall)) { + dmxScreen->where = PosRightOf; + dmxScreen->whereRefScreen = edge; + edge = dmxNumScreens-1; + } else { + dmxScreen->where = PosBelow; + dmxScreen->whereRefScreen = last; + } + + } + last = dmxNumScreens-1; + if (dmxScreen->where == PosAbsolute) + dmxLog(dmxInfo, "Added %s at %d %d\n", + pt->string, dmxScreen->whereX, dmxScreen->whereY); + else + dmxLog(dmxInfo, "Added %s %s %s\n", + pt->string, + dmxScreen->where == PosBelow ? "below" : "right of", + dmxScreens[dmxScreen->whereRefScreen].name); + } +} + +static void dmxConfigCopyFromOption(DMXConfigOptionPtr o) +{ + DMXConfigStringPtr pt; + int argc = 0; + char **argv = NULL; + + if (serverGeneration != 1) return; /* FIXME: only do once, for now */ + if (!o || !o->string) return; + for (pt = o->option; pt; pt = pt->next) { + if (pt->string) { + ++argc; + argv = realloc(argv, (argc+1) * sizeof(*argv)); + argv[argc] = (char *)pt->string; + } + } + argv[0] = NULL; + ProcessCommandLine(argc+1, argv); + free(argv); +} + +static void dmxConfigCopyFromParam(DMXConfigParamPtr p) +{ + const char **argv; + int argc; + + if ((argv = dmxConfigLookupParam(p, "xkbrules", &argc)) && argc == 2) { + dmxConfigSetXkbRules(argv[1]); + } else if ((argv = dmxConfigLookupParam(p, "xkbmodel", &argc)) + && argc == 2) { + dmxConfigSetXkbModel(argv[1]); + } else if ((argv = dmxConfigLookupParam(p, "xkblayout", &argc)) + && argc == 2) { + dmxConfigSetXkbLayout(argv[1]); + } else if ((argv = dmxConfigLookupParam(p, "xkbvariant", &argc)) + && argc == 2) { + dmxConfigSetXkbVariant(argv[1]); + } else if ((argv = dmxConfigLookupParam(p, "xkboptions", &argc)) + && argc == 2) { + dmxConfigSetXkbOptions(argv[1]); + } +} + +static void dmxConfigCopyData(DMXConfigVirtualPtr v) +{ + DMXConfigSubPtr sub; + + if (v->dim) dmxSetWidthHeight(v->dim->x, v->dim->y); + else dmxSetWidthHeight(0, 0); + for (sub = v->subentry; sub; sub = sub->next) { + switch (sub->type) { + case dmxConfigDisplay: dmxConfigCopyFromDisplay(sub->display); break; + case dmxConfigWall: dmxConfigCopyFromWall(sub->wall); break; + case dmxConfigOption: dmxConfigCopyFromOption(sub->option); break; + case dmxConfigParam: dmxConfigCopyFromParam(sub->param); break; + default: + dmxLog(dmxFatal, + "dmxConfigCopyData: not a display, wall, or value\n"); + } + } +} + +static void dmxConfigFromCommandLine(void) +{ + DMXConfigListPtr pt; + + dmxLog(dmxInfo, "Using configuration from command line\n"); + for (pt = dmxConfigCmd.displays; pt; pt = pt->next) { + DMXScreenInfo *dmxScreen = dmxConfigAddDisplay(pt->name, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0); + if (dmxNumScreens == 1) { + dmxScreen->where = PosAbsolute; + dmxScreen->whereX = 0; + dmxScreen->whereY = 0; + dmxLog(dmxInfo, "Added %s at %d %d\n", + dmxScreen->name, dmxScreen->whereX, dmxScreen->whereY); + } else { + dmxScreen->where = PosRightOf; + dmxScreen->whereRefScreen = dmxNumScreens - 2; + if (dmxScreen->whereRefScreen < 0) dmxScreen->whereRefScreen = 0; + dmxLog(dmxInfo, "Added %s %s %s\n", + dmxScreen->name, + dmxScreen->where == PosBelow ? "below" : "right of", + dmxScreens[dmxScreen->whereRefScreen].name); + } + } +} + +static void dmxConfigFromConfigFile(void) +{ + DMXConfigEntryPtr pt; + const char *name; + + for (pt = dmxConfigEntry; pt; pt = pt->next) { + /* FIXME -- if an input is specified, use it */ + if (pt->type != dmxConfigVirtual) continue; + if ((name = dmxConfigMatch(dmxConfigCmd.config, pt))) { + dmxLog(dmxInfo, "Using configuration \"%s\"\n", name); + dmxConfigCopyData(pt->virtual); + return; + } + } + dmxLog(dmxFatal, "Could not find configuration \"%s\" in \"%s\"\n", + dmxConfigCmd.config, dmxConfigCmd.filename); +} + +static void dmxConfigConfigInputs(void) +{ + DMXConfigListPtr pt; + + if (dmxNumInputs) return; + + if (dmxConfigCmd.inputs) { /* Use command line */ + for (pt = dmxConfigCmd.inputs; pt; pt = pt->next) + dmxConfigAddInput(pt->name, TRUE); + } else if (dmxNumScreens) { /* Use first display */ + dmxConfigAddInput(dmxScreens[0].name, TRUE); + } else { /* Use dummy */ + dmxConfigAddInput("dummy", TRUE); + } + + if (dmxConfigCmd.xinputs) { /* Non-core devices from command line */ + for (pt = dmxConfigCmd.xinputs; pt; pt = pt->next) + dmxConfigAddInput(pt->name, FALSE); + } +} + +/** Set up the appropriate global variables so that the DMX server will + * be initialized using the configuration specified in the config file + * and on the command line. */ +void dmxConfigConfigure(void) +{ + if (dmxConfigEntry) { + dmxConfigFreeEntry(dmxConfigEntry); + dmxConfigEntry = NULL; + } + if (dmxConfigCmd.filename) { + if (dmxConfigCmd.displays) + dmxLog(dmxWarning, + "Using configuration file \"%s\" instead of command line\n", + dmxConfigCmd.filename); + dmxConfigReadFile(dmxConfigCmd.filename, 0); + dmxConfigFromConfigFile(); + } else { + if (dmxConfigCmd.config) + dmxLog(dmxWarning, + "Configuration name (%s) without configuration file\n", + dmxConfigCmd.config); + dmxConfigFromCommandLine(); + } + dmxConfigConfigInputs(); +} + +/** This function determines the number of displays we WILL have and + * sets MAXSCREENS to that value. This is difficult since the number + * depends on the command line (which is easy to count) or on the config + * file, which has to be parsed. */ +void dmxConfigSetMaxScreens(void) +{ + static int processing = 0; + + if (processing) return; /* Prevent reentry via ProcessCommandLine */ + processing = 1; + if (dmxConfigCmd.filename) { + if (!dmxNumScreens) + dmxConfigConfigure(); +#ifndef MAXSCREENS + SetMaxScreens(dmxNumScreens); +#endif + } else +#ifndef MAXSCREENS + SetMaxScreens(dmxDisplaysFromCommandLine); +#endif + processing = 0; +} + +/** This macro is used to generate the following access methods: + * - dmxConfig{Set,Get}rules + * - dmxConfig{Set,Get}model + * - dmxConfig{Set,Get}layout + * - dmxConfig{Set,Get}variant + * - dmxConfig{Set,Get}options + * These methods are used to read and write information about the keyboard. */ + +#define GEN(param,glob,def) \ + void dmxConfigSet##glob(const char *param) { \ + if (dmx##glob) free((void *)dmx##glob); \ + dmx##glob = strdup(param); \ + } \ + char *dmxConfigGet##glob(void) { \ + return (char *)(dmx##glob ? dmx##glob : def); \ + } + +GEN(rules, XkbRules, DMX_DEFAULT_XKB_RULES) +GEN(model, XkbModel, DMX_DEFAULT_XKB_MODEL) +GEN(layout, XkbLayout, DMX_DEFAULT_XKB_LAYOUT) +GEN(variant, XkbVariant, DMX_DEFAULT_XKB_VARIANT) +GEN(options, XkbOptions, DMX_DEFAULT_XKB_OPTIONS) + diff --git a/nx-X11/programs/Xserver/hw/dmx/config/dmxconfig.h b/nx-X11/programs/Xserver/hw/dmx/config/dmxconfig.h new file mode 100644 index 000000000..b5c0c1f1c --- /dev/null +++ b/nx-X11/programs/Xserver/hw/dmx/config/dmxconfig.h @@ -0,0 +1,65 @@ +/* $XFree86$ */ +/* + * Copyright 2002 Red Hat Inc., Durham, North Carolina. + * + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation on the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice (including the + * next paragraph) shall be included in all copies or substantial + * portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +/* + * Authors: + * Rickard E. (Rik) Faith + * + */ + +/** \file + * Interface for DMX configuration file support. \see dmxconfig.c */ + +#ifndef _DMXCONFIG_H_ +#define _DMXCONFIG_H_ +#define DMX_DEFAULT_XKB_RULES "xfree86" +#define DMX_DEFAULT_XKB_MODEL "pc101" +#define DMX_DEFAULT_XKB_LAYOUT "us" +#define DMX_DEFAULT_XKB_VARIANT NULL +#define DMX_DEFAULT_XKB_OPTIONS NULL + +extern void dmxConfigStoreDisplay(const char *display); +extern void dmxConfigStoreInput(const char *input); /* Core devices */ +extern void dmxConfigStoreXInput(const char *input); /* Non-core devices */ +extern void dmxConfigStoreFile(const char *file); +extern void dmxConfigStoreConfig(const char *config); +extern void dmxConfigConfigure(void); +extern void dmxConfigSetMaxScreens(void); + +extern void dmxConfigSetXkbRules(const char *rules); +extern void dmxConfigSetXkbModel(const char *model); +extern void dmxConfigSetXkbLayout(const char *layout); +extern void dmxConfigSetXkbVariant(const char *variant); +extern void dmxConfigSetXkbOptions(const char *options); + +extern char *dmxConfigGetXkbRules(void); +extern char *dmxConfigGetXkbModel(void); +extern char *dmxConfigGetXkbLayout(void); +extern char *dmxConfigGetXkbVariant(void); +extern char *dmxConfigGetXkbOptions(void); +#endif diff --git a/nx-X11/programs/Xserver/hw/dmx/config/dmxparse.c b/nx-X11/programs/Xserver/hw/dmx/config/dmxparse.c new file mode 100644 index 000000000..1acb6d13e --- /dev/null +++ b/nx-X11/programs/Xserver/hw/dmx/config/dmxparse.c @@ -0,0 +1,611 @@ +/* $XFree86$ */ +/* + * Copyright 2002 Red Hat Inc., Durham, North Carolina. + * + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation on the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice (including the + * next paragraph) shall be included in all copies or substantial + * portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +/* + * Authors: + * Rickard E. (Rik) Faith + * + */ + +/** \file + * + * This file provides support routines and helper functions to be used + * by the DMX configuration file parser. + * + * Because the DMX configuration file parsing should be capable of being + * used in a stand-alone fashion (i.e., independent from the DMX server + * source tree), no dependencies on other DMX routines are made. */ + +#ifdef HAVE_DMX_CONFIG_H +#include +#endif + +#include +#include +#include +#include +#include "dmxparse.h" + +/** A general error logging routine that does not depend on the dmxLog + * functions. */ +void dmxConfigLog(const char *format, ...) +{ + va_list args; + + va_start(args, format); + vprintf(format, args); /* RATS: All calls to dmxConfigLog from + * dmxparse.c and dmxprint.c use a + * trusted format. */ + va_end(args); +} + +void *dmxConfigAlloc(unsigned long bytes) +{ + void *area = malloc(bytes); + if (!area) { + dmxConfigLog("dmxConfigAlloc: out of memory\n"); + return NULL; + } + memset(area, 0, bytes); + return area; +} + +void *dmxConfigRealloc(void *orig, unsigned long orig_bytes, + unsigned long bytes) +{ + unsigned char *area = realloc(orig, bytes); + if (!area) { + dmxConfigLog("dmxConfigRealloc: out of memory\n"); + return NULL; + } + memset(area + orig_bytes, 0, bytes - orig_bytes); + return area; +} + +const char *dmxConfigCopyString(const char *string, int length) +{ + char *copy; + + if (!length) length = strlen(string); + copy = dmxConfigAlloc(length + 1); + if (length) strncpy(copy, string, length); + copy[length] = '\0'; + return copy; +} + +void dmxConfigFree(void *area) +{ + if (area) free(area); +} + +DMXConfigTokenPtr dmxConfigCreateToken(int token, int line, + const char *comment) +{ + DMXConfigTokenPtr pToken = dmxConfigAlloc(sizeof(*pToken)); + pToken->token = token; + pToken->line = line; + pToken->comment = comment; + return pToken; +} + +void dmxConfigFreeToken(DMXConfigTokenPtr p) +{ + if (!p) return; + dmxConfigFree((void *)p->comment); + dmxConfigFree(p); +} + +DMXConfigStringPtr dmxConfigCreateString(int token, int line, + const char *comment, + const char *string) +{ + DMXConfigStringPtr pString = dmxConfigAlloc(sizeof(*pString)); + + pString->token = token; + pString->line = line; + pString->comment = comment; + pString->string = string; + return pString; +} + +void dmxConfigFreeString(DMXConfigStringPtr p) +{ + DMXConfigStringPtr next; + + if (!p) return; + do { + next = p->next; + dmxConfigFree((void *)p->comment); + dmxConfigFree((void *)p->string); + dmxConfigFree(p); + } while ((p = next)); +} + +DMXConfigNumberPtr dmxConfigCreateNumber(int token, int line, + const char *comment, + int number) +{ + DMXConfigNumberPtr pNumber = dmxConfigAlloc(sizeof(*pNumber)); + + pNumber->token = token; + pNumber->line = line; + pNumber->comment = comment; + pNumber->number = number; + return pNumber; +} + +void dmxConfigFreeNumber(DMXConfigNumberPtr p) +{ + if (!p) return; + dmxConfigFree((void *)p->comment); + dmxConfigFree(p); +} + +DMXConfigPairPtr dmxConfigCreatePair(int token, int line, + const char *comment, + int x, int y, + int xsign, int ysign) +{ + DMXConfigPairPtr pPair = dmxConfigAlloc(sizeof(*pPair)); + + pPair->token = token; + pPair->line = line; + pPair->comment = comment; + pPair->x = x; + pPair->y = y; + pPair->xsign = (xsign < 0) ? -1 : 1; + pPair->ysign = (ysign < 0) ? -1 : 1; + return pPair; +} + +void dmxConfigFreePair(DMXConfigPairPtr p) +{ + if (!p) return; + dmxConfigFree((void *)p->comment); + dmxConfigFree(p); +} + +DMXConfigCommentPtr dmxConfigCreateComment(int token, int line, + const char *comment) +{ + DMXConfigCommentPtr pComment = dmxConfigAlloc(sizeof(*pComment)); + + pComment->token = token; + pComment->line = line; + pComment->comment = comment; + return pComment; +} + +void dmxConfigFreeComment(DMXConfigCommentPtr p) +{ + if (!p) return; + dmxConfigFree((void *)p->comment); + dmxConfigFree(p); +} + +DMXConfigPartDimPtr dmxConfigCreatePartDim(DMXConfigPairPtr pDim, + DMXConfigPairPtr pOffset) +{ + DMXConfigPartDimPtr pPart = dmxConfigAlloc(sizeof(*pPart)); + pPart->dim = pDim; + pPart->offset = pOffset; + return pPart; +} + +void dmxConfigFreePartDim(DMXConfigPartDimPtr p) +{ + if (!p) return; + dmxConfigFreePair(p->dim); + dmxConfigFreePair(p->offset); + dmxConfigFree(p); +} + +DMXConfigFullDimPtr dmxConfigCreateFullDim(DMXConfigPartDimPtr pScrn, + DMXConfigPartDimPtr pRoot) +{ + DMXConfigFullDimPtr pFull = dmxConfigAlloc(sizeof(*pFull)); + pFull->scrn = pScrn; + pFull->root = pRoot; + return pFull; +} + +void dmxConfigFreeFullDim(DMXConfigFullDimPtr p) +{ + if (!p) return; + dmxConfigFreePartDim(p->scrn); + dmxConfigFreePartDim(p->root); + dmxConfigFree(p); +} + +DMXConfigDisplayPtr dmxConfigCreateDisplay(DMXConfigTokenPtr pStart, + DMXConfigStringPtr pName, + DMXConfigFullDimPtr pDim, + DMXConfigPairPtr pOrigin, + DMXConfigTokenPtr pEnd) +{ + DMXConfigDisplayPtr pDisplay = dmxConfigAlloc(sizeof(*pDisplay)); + + memset(pDisplay, 0, sizeof(*pDisplay)); + + pDisplay->start = pStart; + pDisplay->dname = pName; + pDisplay->dim = pDim; + pDisplay->origin = pOrigin; + pDisplay->end = pEnd; + + pDisplay->name = pName ? pName->string : NULL; + pDisplay->rootXOrigin = pOrigin ? pOrigin->x : 0; + pDisplay->rootYOrigin = pOrigin ? pOrigin->y : 0; + + if (pDim && pDim->scrn && pDim->scrn->dim) { + pDisplay->scrnWidth = pDim->scrn->dim->x; + pDisplay->scrnHeight = pDim->scrn->dim->y; + } + if (pDim && pDim->scrn && pDim->scrn->offset) { + pDisplay->scrnX = pDim->scrn->offset->x; + pDisplay->scrnY = pDim->scrn->offset->y; + pDisplay->scrnXSign = pDim->scrn->offset->xsign; + pDisplay->scrnYSign = pDim->scrn->offset->ysign; + } + + if (pDim && pDim->root) { + if (pDim->root->dim) { + pDisplay->rootWidth = pDim->root->dim->x; + pDisplay->rootHeight = pDim->root->dim->y; + } + if (pDim->root->offset) { + pDisplay->rootX = pDim->root->offset->x; + pDisplay->rootY = pDim->root->offset->y; + pDisplay->rootXSign = pDim->root->offset->xsign; + pDisplay->rootYSign = pDim->root->offset->ysign; + } + } else { /* If no root specification, copy width + * and height from scrn -- leave offset + * as zero, since it is relative to + * scrn. */ + pDisplay->rootWidth = pDisplay->scrnWidth; + pDisplay->rootHeight = pDisplay->scrnHeight; + } + + + return pDisplay; +} + +void dmxConfigFreeDisplay(DMXConfigDisplayPtr p) +{ + if (!p) return; + dmxConfigFreeToken(p->start); + dmxConfigFreeString(p->dname); + dmxConfigFreeFullDim(p->dim); + dmxConfigFreeToken(p->end); + dmxConfigFree(p); +} + +DMXConfigWallPtr dmxConfigCreateWall(DMXConfigTokenPtr pStart, + DMXConfigPairPtr pWallDim, + DMXConfigPairPtr pDisplayDim, + DMXConfigStringPtr pNameList, + DMXConfigTokenPtr pEnd) +{ + DMXConfigWallPtr pWall = dmxConfigAlloc(sizeof(*pWall)); + + pWall->start = pStart; + pWall->wallDim = pWallDim; + pWall->displayDim = pDisplayDim; + pWall->nameList = pNameList; + pWall->end = pEnd; + + pWall->width = pDisplayDim ? pDisplayDim->x : 0; + pWall->height = pDisplayDim ? pDisplayDim->y : 0; + pWall->xwall = pWallDim ? pWallDim->x : 0; + pWall->ywall = pWallDim ? pWallDim->y : 0; + + return pWall; +} + +void dmxConfigFreeWall(DMXConfigWallPtr p) +{ + if (!p) return; + dmxConfigFreeToken(p->start); + dmxConfigFreePair(p->wallDim); + dmxConfigFreePair(p->displayDim); + dmxConfigFreeString(p->nameList); + dmxConfigFreeToken(p->end); + dmxConfigFree(p); +} + +DMXConfigOptionPtr dmxConfigCreateOption(DMXConfigTokenPtr pStart, + DMXConfigStringPtr pOption, + DMXConfigTokenPtr pEnd) +{ + int length = 0; + int offset = 0; + DMXConfigStringPtr p; + DMXConfigOptionPtr option = dmxConfigAlloc(sizeof(*option)); + + for (p = pOption; p; p = p->next) { + if (p->string) length += strlen(p->string) + 1; + } + + option->string = dmxConfigAlloc(length + 1); + + for (p = pOption; p; p = p->next) { + if (p->string) { + int len = strlen(p->string); + strncpy(option->string + offset, p->string, len); + offset += len; + if (p->next) option->string[offset++] = ' '; + } + } + option->string[offset] = '\0'; + + option->start = pStart; + option->option = pOption; + option->end = pEnd; + + return option; +} + +void dmxConfigFreeOption(DMXConfigOptionPtr p) +{ + if (!p) return; + if (p->string) free(p->string); + dmxConfigFreeToken(p->start); + dmxConfigFreeString(p->option); + dmxConfigFreeToken(p->end); + dmxConfigFree(p); +} + +const char **dmxConfigLookupParam(DMXConfigParamPtr p, const char *key, + int *argc) +{ + DMXConfigParamPtr pt; + + for (pt = p; pt; pt = pt->next) { + if (pt->argv && !strcasecmp(pt->argv[0], key)) { + *argc = pt->argc; + return pt->argv; + } + } + *argc = 0; + return NULL; +} + +DMXConfigParamPtr dmxConfigCreateParam(DMXConfigTokenPtr pStart, + DMXConfigTokenPtr pOpen, + DMXConfigStringPtr pParam, + DMXConfigTokenPtr pClose, + DMXConfigTokenPtr pEnd) +{ + DMXConfigParamPtr param = dmxConfigAlloc(sizeof(*param)); + DMXConfigStringPtr pt; + + param->argc = 0; + param->argv = NULL; + for (pt = pParam; pt; pt = pt->next) { + if (pt->string) { + param->argv = realloc(param->argv, + (param->argc+2) * sizeof(*param->argv)); + param->argv[param->argc] = pt->string; + ++param->argc; + } + } + if (param->argv) param->argv[param->argc] = NULL; + + param->start = pStart; + param->open = pOpen; + param->param = pParam; + param->close = pClose; + param->end = pEnd; + + return param; +} + +void dmxConfigFreeParam(DMXConfigParamPtr p) +{ + DMXConfigParamPtr next; + + if (!p) return; + do { + next = p->next; + dmxConfigFreeToken(p->start); + dmxConfigFreeToken(p->open); + dmxConfigFreeString(p->param); + dmxConfigFreeToken(p->close); + dmxConfigFreeToken(p->end); + dmxConfigFree(p->argv); + dmxConfigFree(p); + } while ((p = next)); +} + +DMXConfigSubPtr dmxConfigCreateSub(DMXConfigType type, + DMXConfigCommentPtr comment, + DMXConfigDisplayPtr display, + DMXConfigWallPtr wall, + DMXConfigOptionPtr option, + DMXConfigParamPtr param) +{ + DMXConfigSubPtr pSub = dmxConfigAlloc(sizeof(*pSub)); + pSub->type = type; + switch (type) { + case dmxConfigComment: pSub->comment = comment; break; + case dmxConfigDisplay: pSub->display = display; break; + case dmxConfigWall: pSub->wall = wall; break; + case dmxConfigOption: pSub->option = option; break; + case dmxConfigParam: pSub->param = param; break; + default: dmxConfigLog("Type %d not supported in subentry\n", type); break; + } + return pSub; +} + +void dmxConfigFreeSub(DMXConfigSubPtr sub) +{ + DMXConfigSubPtr pt; + + for (pt = sub; pt; pt = pt->next) { + switch (pt->type) { + case dmxConfigComment: dmxConfigFreeComment(pt->comment); break; + case dmxConfigDisplay: dmxConfigFreeDisplay(pt->display); break; + case dmxConfigWall: dmxConfigFreeWall(pt->wall); break; + case dmxConfigOption: dmxConfigFreeOption(pt->option); break; + case dmxConfigParam: dmxConfigFreeParam(pt->param); break; + default: + dmxConfigLog("Type %d not supported in subentry\n", pt->type); + break; + } + } + dmxConfigFree(sub); +} + +DMXConfigSubPtr dmxConfigSubComment(DMXConfigCommentPtr comment) +{ + return dmxConfigCreateSub(dmxConfigComment, comment, NULL, NULL, NULL, + NULL); +} + +DMXConfigSubPtr dmxConfigSubDisplay(DMXConfigDisplayPtr display) +{ + return dmxConfigCreateSub(dmxConfigDisplay, NULL, display, NULL, NULL, + NULL); +} + +DMXConfigSubPtr dmxConfigSubWall(DMXConfigWallPtr wall) +{ + return dmxConfigCreateSub(dmxConfigWall, NULL, NULL, wall, NULL, NULL); +} + +DMXConfigSubPtr dmxConfigSubOption(DMXConfigOptionPtr option) +{ + return dmxConfigCreateSub(dmxConfigOption, NULL, NULL, NULL, option, NULL); +} + +DMXConfigSubPtr dmxConfigSubParam(DMXConfigParamPtr param) +{ + return dmxConfigCreateSub(dmxConfigParam, NULL, NULL, NULL, NULL, param); +} + +extern DMXConfigSubPtr dmxConfigAddSub(DMXConfigSubPtr head, + DMXConfigSubPtr sub) +{ + DMXConfigSubPtr pt; + + if (!head) return sub; + for (pt = head; pt->next; pt = pt->next); + pt->next = sub; + return head; +} + +DMXConfigVirtualPtr dmxConfigCreateVirtual(DMXConfigTokenPtr pStart, + DMXConfigStringPtr pName, + DMXConfigPairPtr pDim, + DMXConfigTokenPtr pOpen, + DMXConfigSubPtr pSubentry, + DMXConfigTokenPtr pClose) +{ + DMXConfigVirtualPtr pVirtual = dmxConfigAlloc(sizeof(*pVirtual)); + + pVirtual->start = pStart; + pVirtual->vname = pName; + pVirtual->dim = pDim; + pVirtual->open = pOpen; + pVirtual->subentry = pSubentry; + pVirtual->close = pClose; + + pVirtual->name = pName ? pName->string : NULL; + pVirtual->width = pDim ? pDim->x : 0; + pVirtual->height = pDim ? pDim->y : 0; + + return pVirtual; +} + +void dmxConfigFreeVirtual(DMXConfigVirtualPtr virtual) +{ + dmxConfigFreeToken(virtual->start); + dmxConfigFreeString(virtual->vname); + dmxConfigFreePair(virtual->dim); + dmxConfigFreeToken(virtual->open); + dmxConfigFreeSub(virtual->subentry); + dmxConfigFreeToken(virtual->close); + dmxConfigFree(virtual); +} + +DMXConfigEntryPtr dmxConfigCreateEntry(DMXConfigType type, + DMXConfigCommentPtr comment, + DMXConfigVirtualPtr virtual) +{ + DMXConfigEntryPtr pEntry = dmxConfigAlloc(sizeof(*pEntry)); + pEntry->type = type; + switch (type) { + case dmxConfigComment: pEntry->comment = comment; break; + case dmxConfigVirtual: pEntry->virtual = virtual; break; + default: dmxConfigLog("Type %d not supported in entry\n", type); break; + } + return pEntry; +} + +void dmxConfigFreeEntry(DMXConfigEntryPtr entry) +{ + DMXConfigEntryPtr pt; + + for (pt = entry; pt; pt = pt->next) { + switch (pt->type) { + case dmxConfigComment: dmxConfigFreeComment(pt->comment); break; + case dmxConfigVirtual: dmxConfigFreeVirtual(pt->virtual); break; + default: + dmxConfigLog("Type %d not supported in entry\n", pt->type); + break; + } + } + dmxConfigFree(entry); +} + +DMXConfigEntryPtr dmxConfigAddEntry(DMXConfigEntryPtr head, + DMXConfigType type, + DMXConfigCommentPtr comment, + DMXConfigVirtualPtr virtual) +{ + DMXConfigEntryPtr child = dmxConfigCreateEntry(type, comment, virtual); + DMXConfigEntryPtr pt; + + if (!head) return child; + + for (pt = head; pt->next; pt = pt->next); + pt->next = child; + + return head; +} + +DMXConfigEntryPtr dmxConfigEntryComment(DMXConfigCommentPtr comment) +{ + return dmxConfigCreateEntry(dmxConfigComment, comment, NULL); +} + +DMXConfigEntryPtr dmxConfigEntryVirtual(DMXConfigVirtualPtr virtual) +{ + return dmxConfigCreateEntry(dmxConfigVirtual, NULL, virtual); +} diff --git a/nx-X11/programs/Xserver/hw/dmx/config/dmxparse.h b/nx-X11/programs/Xserver/hw/dmx/config/dmxparse.h new file mode 100644 index 000000000..8ea84f4e3 --- /dev/null +++ b/nx-X11/programs/Xserver/hw/dmx/config/dmxparse.h @@ -0,0 +1,298 @@ +/* $XFree86$ */ +/* + * Copyright 2002 Red Hat Inc., Durham, North Carolina. + * + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation on the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice (including the + * next paragraph) shall be included in all copies or substantial + * portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +/* + * Authors: + * Rickard E. (Rik) Faith + * + */ + +/** \file + * Interface to DMX configuration file parser. \see dmxparse.c */ + +#ifndef _DMXPARSE_H_ +#define _DMXPARSE_H_ + +#include /* For FILE */ + +/** Stores tokens not stored in other structures (e.g., keywords and ;) */ +typedef struct _DMXConfigToken { + int token; + int line; + const char *comment; +} DMXConfigToken, *DMXConfigTokenPtr; + +/** Stores parsed strings. */ +typedef struct _DMXConfigString { + int token; + int line; + const char *comment; + const char *string; + struct _DMXConfigString *next; +} DMXConfigString, *DMXConfigStringPtr; + +/** Stores parsed numbers. */ +typedef struct _DMXConfigNumber { + int token; + int line; + const char *comment; + int number; +} DMXConfigNumber, *DMXConfigNumberPtr; + +/** Stores parsed pairs (e.g., x y) */ +typedef struct _DMXConfigPair { + int token; + int line; + const char *comment; + int x; + int y; + int xsign; + int ysign; +} DMXConfigPair, *DMXConfigPairPtr; + +/** Stores parsed comments not stored with a token. */ +typedef struct _DMXConfigComment { + int token; + int line; + const char *comment; +} DMXConfigComment, *DMXConfigCommentPtr; + +typedef enum { + dmxConfigComment, + dmxConfigVirtual, + dmxConfigDisplay, + dmxConfigWall, + dmxConfigOption, + dmxConfigParam +} DMXConfigType; + +/** Stores a geometry specification. */ +typedef struct _DMXConfigPartDim { + DMXConfigPairPtr dim; + DMXConfigPairPtr offset; +} DMXConfigPartDim, *DMXConfigPartDimPtr; + +/** Stores a pair of geometry specifications. */ +typedef struct _DMXConfigFullDim { + DMXConfigPartDimPtr scrn; + DMXConfigPartDimPtr root; +} DMXConfigFullDim, *DMXConfigFullDimPtr; + +/** Stores parsed display information. */ +typedef struct _DMXConfigDisplay { + /* Summary information */ + const char *name; + /* Screen Window Geometry */ + int scrnWidth, scrnHeight; + int scrnX, scrnY; + int scrnXSign, scrnYSign; + /* Root Window Geometry */ + int rootWidth, rootHeight; + int rootX, rootY; + int rootXSign, rootYSign; + /* Origin in global space */ + int rootXOrigin, rootYOrigin; + + /* Raw configuration information */ + DMXConfigTokenPtr start; + DMXConfigStringPtr dname; + DMXConfigFullDimPtr dim; + DMXConfigPairPtr origin; + DMXConfigTokenPtr end; +} DMXConfigDisplay, *DMXConfigDisplayPtr; + +/** Stores parsed wall information. */ +typedef struct _DMXConfigWall { + /* Summary information */ + int width, height; /* dimensions of displays */ + int xwall, ywall; /* dimensions of wall, in tiles */ + + + /* Raw configuration informaiton */ + DMXConfigTokenPtr start; + DMXConfigPairPtr wallDim; + DMXConfigPairPtr displayDim; + DMXConfigStringPtr nameList; + DMXConfigTokenPtr end; +} DMXConfigWall, *DMXConfigWallPtr; + +/** Stores parsed option information. */ +typedef struct _DMXConfigOption { + /* Summary information */ + char *string; + + /* Raw configuration informaiton */ + DMXConfigTokenPtr start; + DMXConfigStringPtr option; + DMXConfigTokenPtr end; +} DMXConfigOption, *DMXConfigOptionPtr; + +/** Stores parsed param information. */ +typedef struct _DMXConfigParam { + int argc; + const char **argv; + + DMXConfigTokenPtr start; + DMXConfigTokenPtr open; + DMXConfigStringPtr param; + DMXConfigTokenPtr close; + DMXConfigTokenPtr end; /* Either open/close OR end */ + struct _DMXConfigParam *next; +} DMXConfigParam, *DMXConfigParamPtr; + +/** Stores options under an entry (subentry). */ +typedef struct _DMXConfigSub { + DMXConfigType type; + DMXConfigCommentPtr comment; + DMXConfigDisplayPtr display; + DMXConfigWallPtr wall; + DMXConfigOptionPtr option; + DMXConfigParamPtr param; + struct _DMXConfigSub *next; +} DMXConfigSub, *DMXConfigSubPtr; + +/** Stores parsed virtual information. */ +typedef struct _DMXConfigVirtual { + /* Summary information */ + const char *name; + int width, height; + + /* Raw configuration information */ + DMXConfigTokenPtr start; + DMXConfigStringPtr vname; + DMXConfigPairPtr dim; + DMXConfigTokenPtr open; + DMXConfigSubPtr subentry; + DMXConfigTokenPtr close; +} DMXConfigVirtual, *DMXConfigVirtualPtr; + +/** Heads entry storage. */ +typedef struct _DMXConfigEntry { + DMXConfigType type; + DMXConfigCommentPtr comment; + DMXConfigVirtualPtr virtual; + struct _DMXConfigEntry *next; +} DMXConfigEntry, *DMXConfigEntryPtr; + +extern DMXConfigEntryPtr dmxConfigEntry; + +extern int yylex(void); +extern int yydebug; +extern void yyerror(const char *message); + +extern void dmxConfigLog(const char *format, ...); +extern void *dmxConfigAlloc(unsigned long bytes); +extern void *dmxConfigRealloc(void *orig, + unsigned long orig_bytes, + unsigned long bytes); +extern const char *dmxConfigCopyString(const char *string, + int length); +extern void dmxConfigFree(void *area); +extern DMXConfigTokenPtr dmxConfigCreateToken(int token, int line, + const char *comment); +extern void dmxConfigFreeToken(DMXConfigTokenPtr p); +extern DMXConfigStringPtr dmxConfigCreateString(int token, int line, + const char *comment, + const char *string); +extern void dmxConfigFreeString(DMXConfigStringPtr p); +extern DMXConfigNumberPtr dmxConfigCreateNumber(int token, int line, + const char *comment, + int number); +extern void dmxConfigFreeNumber(DMXConfigNumberPtr p); +extern DMXConfigPairPtr dmxConfigCreatePair(int token, int line, + const char *comment, + int x, int y, + int xsign, int ysign); +extern void dmxConfigFreePair(DMXConfigPairPtr p); +extern DMXConfigCommentPtr dmxConfigCreateComment(int token, int line, + const char *comment); +extern void dmxConfigFreeComment(DMXConfigCommentPtr p); +extern DMXConfigPartDimPtr dmxConfigCreatePartDim(DMXConfigPairPtr pDim, + DMXConfigPairPtr pOffset); +extern void dmxConfigFreePartDim(DMXConfigPartDimPtr p); +extern DMXConfigFullDimPtr dmxConfigCreateFullDim(DMXConfigPartDimPtr pScrn, + DMXConfigPartDimPtr pRoot); +extern void dmxConfigFreeFullDim(DMXConfigFullDimPtr p); +extern DMXConfigDisplayPtr dmxConfigCreateDisplay(DMXConfigTokenPtr pStart, + DMXConfigStringPtr pName, + DMXConfigFullDimPtr pDim, + DMXConfigPairPtr pOrigin, + DMXConfigTokenPtr pEnd); +extern void dmxConfigFreeDisplay(DMXConfigDisplayPtr p); +extern DMXConfigWallPtr dmxConfigCreateWall(DMXConfigTokenPtr pStart, + DMXConfigPairPtr pWallDim, + DMXConfigPairPtr pDisplayDim, + DMXConfigStringPtr pNameList, + DMXConfigTokenPtr pEnd); +extern void dmxConfigFreeWall(DMXConfigWallPtr p); +extern DMXConfigOptionPtr dmxConfigCreateOption(DMXConfigTokenPtr pStart, + DMXConfigStringPtr pOption, + DMXConfigTokenPtr pEnd); +extern void dmxConfigFreeOption(DMXConfigOptionPtr p); +extern DMXConfigParamPtr dmxConfigCreateParam(DMXConfigTokenPtr pStart, + DMXConfigTokenPtr pOpen, + DMXConfigStringPtr pParam, + DMXConfigTokenPtr pClose, + DMXConfigTokenPtr pEnd); +extern void dmxConfigFreeParam(DMXConfigParamPtr p); +extern const char **dmxConfigLookupParam(DMXConfigParamPtr p, + const char *key, + int *argc); +extern DMXConfigSubPtr dmxConfigCreateSub(DMXConfigType type, + DMXConfigCommentPtr comment, + DMXConfigDisplayPtr display, + DMXConfigWallPtr wall, + DMXConfigOptionPtr option, + DMXConfigParamPtr param); +extern void dmxConfigFreeSub(DMXConfigSubPtr sub); +extern DMXConfigSubPtr dmxConfigSubComment(DMXConfigCommentPtr comment); +extern DMXConfigSubPtr dmxConfigSubDisplay(DMXConfigDisplayPtr display); +extern DMXConfigSubPtr dmxConfigSubWall(DMXConfigWallPtr wall); +extern DMXConfigSubPtr dmxConfigSubOption(DMXConfigOptionPtr option); +extern DMXConfigSubPtr dmxConfigSubParam(DMXConfigParamPtr param); +extern DMXConfigSubPtr dmxConfigAddSub(DMXConfigSubPtr head, + DMXConfigSubPtr sub); +extern DMXConfigVirtualPtr dmxConfigCreateVirtual(DMXConfigTokenPtr pStart, + DMXConfigStringPtr pName, + DMXConfigPairPtr pDim, + DMXConfigTokenPtr pOpen, + DMXConfigSubPtr pSubentry, + DMXConfigTokenPtr pClose); +extern void dmxConfigFreeVirtual(DMXConfigVirtualPtr virtual); +extern DMXConfigEntryPtr dmxConfigCreateEntry(DMXConfigType type, + DMXConfigCommentPtr comment, + DMXConfigVirtualPtr virtual); +extern void dmxConfigFreeEntry(DMXConfigEntryPtr entry); +extern DMXConfigEntryPtr dmxConfigAddEntry(DMXConfigEntryPtr head, + DMXConfigType type, + DMXConfigCommentPtr comment, + DMXConfigVirtualPtr virtual); +extern DMXConfigEntryPtr dmxConfigEntryComment(DMXConfigCommentPtr comment); +extern DMXConfigEntryPtr dmxConfigEntryVirtual(DMXConfigVirtualPtr virtual); + +#endif diff --git a/nx-X11/programs/Xserver/hw/dmx/config/dmxprint.c b/nx-X11/programs/Xserver/hw/dmx/config/dmxprint.c new file mode 100644 index 000000000..ed3fc213d --- /dev/null +++ b/nx-X11/programs/Xserver/hw/dmx/config/dmxprint.c @@ -0,0 +1,456 @@ +/* $XFree86$ */ +/* + * Copyright 2002 Red Hat Inc., Durham, North Carolina. + * + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation on the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice (including the + * next paragraph) shall be included in all copies or substantial + * portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +/* + * Authors: + * Rickard E. (Rik) Faith + * + */ + +/** \file + * + * This file provides support routines and helper functions to be used + * to pretty-print DMX configurations. + * + * Because the DMX configuration file parsing should be capable of being + * used in a stand-alone fashion (i.e., independent from the DMX server + * source tree), no dependencies on other DMX routines are made. */ + +#ifdef HAVE_DMX_CONFIG_H +#include +#endif + +#include "dmxconfig.h" +#include "dmxparse.h" +#include "dmxprint.h" +#include "parser.h" +#include +#include +#include + +static FILE *str = NULL; +static int indent = 0; +static int pos = 0; + +/** Stack of indentation information used for pretty-printing + * configuration information. */ +static struct stack { + int base; + int comment; + int step; + struct stack *next; +} *stack, initialStack = { 0, 0, 4, NULL }; + +static void dmxConfigIndent(void) +{ + int i; + if (indent < 0) indent = 0; + if (indent > 40) indent = 40; + for (i = 0; i < indent; i++) fprintf(str, " "); +} + +static void dmxConfigNewline(void) +{ + if (pos) fprintf(str, "\n"); + pos = 0; +} + +static void dmxConfigPushState(int base, int comment, int step) +{ + struct stack *new = dmxConfigAlloc(sizeof(*new)); + new->base = base; + new->comment = comment; + new->step = step; + new->next = stack; + stack = new; + indent = base; + dmxConfigNewline(); +} + +static void dmxConfigPushComment(void) +{ + if (stack) indent = stack->comment; +} + +static void dmxConfigPushStep(void) +{ + if (stack) indent = stack->step; +} + +static void dmxConfigPopState(void) +{ + struct stack *old = stack; + + if (!stack) return; + indent = old->base; + stack = old->next; + if (!stack) dmxConfigLog("Stack underflow\n"); + dmxConfigFree(old); + dmxConfigNewline(); +} + +static void dmxConfigOutput(int addSpace, int doNewline, const char *comment, + const char *format, ...) +{ + va_list args; + + if (!pos) dmxConfigIndent(); + else if (addSpace) fprintf(str, " "); + + if (format) { + va_start(args, format); + /* RATS: This hasn't been audited -- it + * could probably result in a buffer + * overflow. */ + pos += vfprintf(str, format, args); /* assumes no newlines! */ + va_end(args); + } + + if (comment) { + if (pos) fprintf(str, " "); + pos += fprintf(str, "#%s", comment); + dmxConfigNewline(); + dmxConfigPushComment(); + } else if (doNewline) dmxConfigNewline(); +} + +static void dmxConfigPrintComment(DMXConfigCommentPtr p) +{ + dmxConfigOutput(1, 1, p->comment, NULL); +} + +static void dmxConfigPrintTokenFlag(DMXConfigTokenPtr p, int flag) +{ + if (!p) return; + switch (p->token) { + case T_VIRTUAL: + dmxConfigPushState(0, 4, 4); + dmxConfigOutput(0, 0, p->comment, "virtual"); + break; + case T_DISPLAY: + dmxConfigPushState(4, 12, 16); + dmxConfigOutput(0, 0, p->comment, "display"); + break; + case T_WALL: + dmxConfigPushState(4, 12, 16); + dmxConfigOutput(0, 0, p->comment, "wall"); + break; + case T_OPTION: + dmxConfigPushState(4, 12, 16); + dmxConfigOutput(0, 0, p->comment, "option"); + break; + case T_PARAM: + dmxConfigPushState(4, 8, 12); + dmxConfigOutput(0, 0, p->comment, "param"); + break; + case ';': + dmxConfigOutput(0, 1, p->comment, ";"); + if (flag) dmxConfigPopState(); + break; + case '{': + dmxConfigOutput(1, 1, p->comment, "{"); + dmxConfigPushStep(); + break; + case '}': + if (flag) dmxConfigPopState(); + dmxConfigOutput(0, 1, p->comment, "}"); + break; + case '/': + dmxConfigOutput(1, 0, NULL, "/"); + break; + default: + dmxConfigLog("unknown token %d on line %d\n", p->token, p->line); + } +} + +static void dmxConfigPrintToken(DMXConfigTokenPtr p) +{ + dmxConfigPrintTokenFlag(p, 1); +} + +static void dmxConfigPrintTokenNopop(DMXConfigTokenPtr p) +{ + dmxConfigPrintTokenFlag(p, 0); +} + +static int dmxConfigPrintQuotedString(const char *s) +{ + const char *pt; + + if (!s || !s[0]) return 1; /* Quote empty string */ + for (pt = s; *pt; ++pt) if (isspace(*pt)) return 1; + return 0; +} + +static void dmxConfigPrintString(DMXConfigStringPtr p, int quote) +{ + DMXConfigStringPtr pt; + + if (!p) return; + for (pt = p; pt; pt = pt->next) { + if (quote && dmxConfigPrintQuotedString(pt->string)) { + dmxConfigOutput(1, 0, pt->comment, "\"%s\"", + pt->string ? pt->string : ""); + } else + dmxConfigOutput(1, 0, pt->comment, "%s", + pt->string ? pt->string : ""); + } +} + +static int dmxConfigPrintPair(DMXConfigPairPtr p, int addSpace) +{ + const char *format = NULL; + + if (!p) return 0; + switch (p->token) { + case T_ORIGIN: format = "@%dx%d"; break; + case T_DIMENSION: format = "%dx%d"; break; + case T_OFFSET: format = "%c%d%c%d"; break; + } + if (p->token == T_OFFSET) { + if (!p->comment && !p->x && !p->y && p->xsign >= 0 && p->ysign >= 0) + return 0; + dmxConfigOutput(addSpace, 0, p->comment, format, + p->xsign < 0 ? '-' : '+', p->x, + p->ysign < 0 ? '-' : '+', p->y); + } else { + if (!p->comment && !p->x && !p->y) return 0; + dmxConfigOutput(addSpace, 0, p->comment, format, p->x, p->y); + } + return 1; +} + +static void dmxConfigPrintDisplay(DMXConfigDisplayPtr p) +{ + DMXConfigToken dummyStart = { T_DISPLAY, 0, NULL }; + DMXConfigToken dummyEnd = { ';', 0, NULL }; + DMXConfigToken dummySep = { '/', 0, NULL }; + DMXConfigString dummyName = { T_STRING, 0, NULL, NULL, NULL }; + DMXConfigPair dummySDim = { T_DIMENSION, 0, NULL, 0, 0, 0, 0 }; + DMXConfigPair dummySOffset = { T_OFFSET, 0, NULL, 0, 0, 0, 0 }; + DMXConfigPair dummyRDim = { T_DIMENSION, 0, NULL, 0, 0, 0, 0 }; + DMXConfigPair dummyROffset = { T_OFFSET, 0, NULL, 0, 0, 0, 0 }; + DMXConfigPair dummyOrigin = { T_ORIGIN, 0, NULL, 0, 0, 0, 0 }; + int output; + + if (p->dname) p->dname->string = p->name; + else dummyName.string = p->name; + + if (p->dim && p->dim->scrn && p->dim->scrn->dim) { + p->dim->scrn->dim->x = p->scrnWidth; + p->dim->scrn->dim->y = p->scrnHeight; + } else { + dummySDim.x = p->scrnWidth; + dummySDim.y = p->scrnHeight; + } + + if (p->dim && p->dim->scrn && p->dim->scrn->offset) { + p->dim->scrn->offset->x = p->scrnX; + p->dim->scrn->offset->y = p->scrnY; + } else { + dummySOffset.x = p->scrnX; + dummySOffset.y = p->scrnY; + } + + if (p->dim && p->dim->root && p->dim->root->dim) { + p->dim->root->dim->x = p->rootWidth; + p->dim->root->dim->y = p->rootHeight; + } else { + dummyRDim.x = p->rootWidth; + dummyRDim.y = p->rootHeight; + } + + if (p->dim && p->dim->root && p->dim->root->offset) { + p->dim->root->offset->x = p->rootX; + p->dim->root->offset->y = p->rootY; + } else { + dummyROffset.x = p->rootX; + dummyROffset.y = p->rootY; + } + + if (p->origin) { + p->origin->x = p->rootXOrigin, p->origin->y = p->rootYOrigin; + p->origin->xsign = p->rootXSign, p->origin->ysign = p->rootYSign; + } else { + dummyOrigin.x = p->rootXOrigin, dummyOrigin.y = p->rootYOrigin; + dummyOrigin.xsign = p->rootXSign, dummyOrigin.ysign = p->rootYSign; + } + + dmxConfigPrintToken(p->start ? p->start : &dummyStart); + dmxConfigPrintString(p->dname ? p->dname : &dummyName, 1); + + if (p->dim && p->dim->scrn && p->dim->scrn->dim) + output = dmxConfigPrintPair(p->dim->scrn->dim, 1); + else + output = dmxConfigPrintPair(&dummySDim, 1); + if (p->dim && p->dim->scrn && p->dim->scrn->offset) + dmxConfigPrintPair(p->dim->scrn->offset, !output); + else + dmxConfigPrintPair(&dummySOffset, !output); + + if (p->scrnWidth != p->rootWidth + || p->scrnHeight != p->rootHeight + || p->rootX + || p->rootY) { + dmxConfigPrintToken(&dummySep); + if (p->dim && p->dim->root && p->dim->root->dim) + output = dmxConfigPrintPair(p->dim->root->dim, 1); + else + output = dmxConfigPrintPair(&dummyRDim, 1); + if (p->dim && p->dim->root && p->dim->root->offset) + dmxConfigPrintPair(p->dim->root->offset, !output); + else + dmxConfigPrintPair(&dummyROffset, !output); + } + + dmxConfigPrintPair(p->origin ? p->origin : &dummyOrigin, 1); + dmxConfigPrintToken(p->end ? p->end : &dummyEnd); +} + +static void dmxConfigPrintWall(DMXConfigWallPtr p) +{ + dmxConfigPrintToken(p->start); + dmxConfigPrintPair(p->wallDim, 1); + dmxConfigPrintPair(p->displayDim, 1); + dmxConfigPrintString(p->nameList, 1); + dmxConfigPrintToken(p->end); +} + +static void dmxConfigPrintOption(DMXConfigOptionPtr p) +{ + DMXConfigToken dummyStart = { T_OPTION, 0, NULL }; + DMXConfigString dummyOption = { T_STRING, 0, NULL, NULL, NULL }; + DMXConfigToken dummyEnd = { ';', 0, NULL }; + + dummyOption.string = p->string; + + dmxConfigPrintToken(p->start ? p->start : &dummyStart); + dmxConfigPrintString(&dummyOption, 0); + dmxConfigPrintToken(p->end ? p->end : &dummyEnd); +} + +static void dmxConfigPrintParam(DMXConfigParamPtr p) +{ + if (!p) return; + if (p->start) { + if (p->open && p->close) { + dmxConfigPrintToken(p->start); + dmxConfigPrintToken(p->open); + dmxConfigPrintParam(p->next); + dmxConfigPrintToken(p->close); + } else if (p->end && p->param) { + dmxConfigPrintToken(p->start); + dmxConfigPrintString(p->param, 1); + dmxConfigPrintToken(p->end); + } else + dmxConfigLog("dmxConfigPrintParam: cannot handle format (a)\n"); + } else if (p->end && p->param) { + dmxConfigPrintString(p->param, 1); + dmxConfigPrintTokenNopop(p->end); + dmxConfigPrintParam(p->next); + } else + dmxConfigLog("dmxConfigPrintParam: cannot handle format (b)\n"); +} + +static void dmxConfigPrintSub(DMXConfigSubPtr p) +{ + DMXConfigSubPtr pt; + + if (!p) return; + for (pt = p; pt; pt = pt->next) { + switch (pt->type) { + case dmxConfigComment: dmxConfigPrintComment(pt->comment); break; + case dmxConfigDisplay: dmxConfigPrintDisplay(pt->display); break; + case dmxConfigWall: dmxConfigPrintWall(pt->wall); break; + case dmxConfigOption: dmxConfigPrintOption(pt->option); break; + case dmxConfigParam: dmxConfigPrintParam(pt->param); break; + default: + dmxConfigLog("dmxConfigPrintSub:" + " cannot handle type %d in subentry\n", pt->type); + } + } +} + +static void dmxConfigPrintVirtual(DMXConfigVirtualPtr p) +{ + DMXConfigToken dummyStart = { T_VIRTUAL, 0, NULL }; + DMXConfigToken dummyOpen = { '{', 0, NULL }; + DMXConfigToken dummyClose = { '}', 0, NULL }; + DMXConfigString dummyName = { T_STRING, 0, NULL, NULL, NULL }; + DMXConfigPair dummyDim = { T_DIMENSION, 0, NULL, 0, 0 }; + + if (p->vname) p->vname->string = p->name; + else dummyName.string = p->name; + + if (p->dim) p->dim->x = p->width, p->dim->y = p->height; + else dummyDim.x = p->width, dummyDim.y = p->height; + + + dmxConfigPrintToken(p->start ? p->start : &dummyStart); + dmxConfigPrintString(p->vname ? p->vname : &dummyName, 1); + dmxConfigPrintPair(p->dim ? p->dim : &dummyDim, 1); + dmxConfigPrintToken(p->open ? p->open : &dummyOpen); + dmxConfigPrintSub(p->subentry); + dmxConfigPrintToken(p->close ? p->close : &dummyClose); +} + +/** The configuration information in \a entry will be pretty-printed to + * the \a stream. If \a stream is NULL, then stdout will be used. */ +void dmxConfigPrint(FILE *stream, DMXConfigEntryPtr entry) +{ + DMXConfigEntryPtr pt; + + if (!stream) str = stdout; + else str = stream; + + stack = &initialStack; + + for (pt = entry; pt; pt = pt->next) { + switch (pt->type) { + case dmxConfigComment: dmxConfigPrintComment(pt->comment); break; + case dmxConfigVirtual: dmxConfigPrintVirtual(pt->virtual); break; + default: + dmxConfigLog("dmxConfigPrint: cannot handle type %d in entry\n", + pt->type); + } + } + if (pos) dmxConfigNewline(); +} + +/** The configuration information in \a p will be pretty-printed to the + * \a stream. If \a stream is NULL, then stdout will be used. */ +void dmxConfigVirtualPrint(FILE *stream, DMXConfigVirtualPtr p) +{ + if (!stream) str = stdout; + else str = stream; + + stack = &initialStack; + + dmxConfigPrintVirtual(p); + if (pos) dmxConfigNewline(); +} diff --git a/nx-X11/programs/Xserver/hw/dmx/config/dmxprint.h b/nx-X11/programs/Xserver/hw/dmx/config/dmxprint.h new file mode 100644 index 000000000..b68c29620 --- /dev/null +++ b/nx-X11/programs/Xserver/hw/dmx/config/dmxprint.h @@ -0,0 +1,44 @@ +/* $XFree86$ */ +/* + * Copyright 2002 Red Hat Inc., Durham, North Carolina. + * + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation on the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice (including the + * next paragraph) shall be included in all copies or substantial + * portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +/* + * Authors: + * Rickard E. (Rik) Faith + * + */ + +/** \file + * Interface to DMX configuration file pretty-printer. \see dmxprint.c */ + +#ifndef _DMXPRINT_H_ +#define _DMXPRINT_H_ + +void dmxConfigPrint(FILE *str, DMXConfigEntryPtr entry); +void dmxConfigVirtualPrint(FILE *str, DMXConfigVirtualPtr p); + +#endif diff --git a/nx-X11/programs/Xserver/hw/dmx/config/dmxtodmx.c b/nx-X11/programs/Xserver/hw/dmx/config/dmxtodmx.c new file mode 100644 index 000000000..706c49908 --- /dev/null +++ b/nx-X11/programs/Xserver/hw/dmx/config/dmxtodmx.c @@ -0,0 +1,50 @@ +/* $XFree86$ */ +/* + * Copyright 2002 Red Hat Inc., Durham, North Carolina. + * + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation on the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice (including the + * next paragraph) shall be included in all copies or substantial + * portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +/* + * Authors: + * Rickard E. (Rik) Faith + * + * This is a simple filter for testing. + */ + +#include "dmxconfig.h" +#include "dmxparse.h" +#include "dmxprint.h" +#include "dmxcompat.h" + +extern int yyparse(void); +extern FILE *yyin; + +int main(int argc, char **argv) +{ + yydebug = 0; + yyparse(); + dmxConfigPrint(stdout, dmxConfigEntry); + return 0; +} diff --git a/nx-X11/programs/Xserver/hw/dmx/config/dmxtodmx.man b/nx-X11/programs/Xserver/hw/dmx/config/dmxtodmx.man new file mode 100644 index 000000000..68c7f5b40 --- /dev/null +++ b/nx-X11/programs/Xserver/hw/dmx/config/dmxtodmx.man @@ -0,0 +1,41 @@ +.\" $XFree86$ +.\" Copyright 2002 Red Hat Inc., Durham, North Carolina. +.\" All Rights Reserved. +.\" +.\" Permission is hereby granted, free of charge, to any person obtaining +.\" a copy of this software and associated documentation files (the +.\" "Software"), to deal in the Software without restriction, including +.\" without limitation on the rights to use, copy, modify, merge, +.\" publish, distribute, sublicense, and/or sell copies of the Software, +.\" and to permit persons to whom the Software is furnished to do so, +.\" subject to the following conditions: +.\" +.\" The above copyright notice and this permission notice (including the +.\" next paragraph) shall be included in all copies or substantial +.\" portions of the Software. +.\" +.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +.\" EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +.\" NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS +.\" BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +.\" ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +.\" CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +.\" SOFTWARE. +.\" +.\" Authors: +.\" Rickard E. (Rik) Faith +.\" +.TH dmxtodmx 1 __vendorversion__ +.SH NAME +dmxtodmx - dmx configuration file parser and printer +.SH SYNOPSIS +.B dmxtodmx +.SH DESCRIPTION +.I dmxtodmx +reads the standard input, parsing a configuration file for the +.I Xdmx +distributed multi-head X server. After a successful parse, the file is +pretty-printed to standard output. +.SH "SEE ALSO" +Xdmx(1), vdltodmx(1), xdmxconfig(1) diff --git a/nx-X11/programs/Xserver/hw/dmx/config/parser.y b/nx-X11/programs/Xserver/hw/dmx/config/parser.y new file mode 100644 index 000000000..ac2441017 --- /dev/null +++ b/nx-X11/programs/Xserver/hw/dmx/config/parser.y @@ -0,0 +1,226 @@ +/* $XFree86$ */ +/* + * Copyright 2002-2003 Red Hat Inc., Durham, North Carolina. + * + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation on the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice (including the + * next paragraph) shall be included in all copies or substantial + * portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +/* + * Authors: + * Rickard E. (Rik) Faith + * + */ + +%{ +#ifdef HAVE_DMX_CONFIG_H +#include +#endif + +#include "dmxparse.h" +#include +#include +#define YYDEBUG 1 +#define YYERROR_VERBOSE +#define YY_USE_PROTOS + +DMXConfigEntryPtr dmxConfigEntry = NULL; +#define APPEND(type, h, t) \ +{ \ + type pt; \ + for (pt = h; pt->next; pt = pt->next); \ + pt->next = t; \ +} +%} + +%union { + DMXConfigTokenPtr token; + DMXConfigStringPtr string; + DMXConfigNumberPtr number; + DMXConfigPairPtr pair; + DMXConfigFullDimPtr fdim; + DMXConfigPartDimPtr pdim; + DMXConfigDisplayPtr display; + DMXConfigWallPtr wall; + DMXConfigOptionPtr option; + DMXConfigParamPtr param; + DMXConfigCommentPtr comment; + DMXConfigSubPtr subentry; + DMXConfigVirtualPtr virtual; + DMXConfigEntryPtr entry; +} + + /* Terminals */ +%token '{' '}' ';' '/' T_VIRTUAL T_DISPLAY T_WALL T_OPTION T_PARAM +%token T_STRING +%token T_DIMENSION T_OFFSET T_ORIGIN +%token T_COMMENT T_LINE_COMMENT + + /* Non-termials */ +%type Display Wall Terminal Open Close +%type NameList Name +%type Dimension Offset Origin +%type PartialDim +%type FullDim +%type DisplayEntry +%type